MySQL 8.0のインストール【CentOS 7】
MySQL8.0をインストールします。
1. miriadb-libs5.5のアンインストール
miriadb-libsの旧バージョンがインストールされていたら、削除します。
# rpm -qa | grep -i "mariadb"
mariadb-libs-5.5.44-1.el7_1.x86_64
# yum remove mariadb-libs
※依存性関連で「postfix」も削除されてしまうので、MariaDBインストール後に再インストールして下さい。
2. インストール
(1) MySQL 8.0
# yum --enablerepo=mysql80-community install mysql-community-server
(2) postfix
postfixの再インストールを行います。
# yum install postfix
# systemctl start postfix.service
# systemctl enable postfix.service
3. MySQLの設定
(1) DBの初期化
DBの初期化を行います。
# mysqld --initialize --user=mysql --datadir=/var/lib/mysql
このコマンドで初期化を行うと、初期ユーザとして「root@localhost」が作成されます。
また、初期パスワードが「/var/log/mysqld.log」に書き込まれます。
ちなみに「mysqld --initialize-insecure」とすると、パスワードは空となります。
(2) rootパスワードの変更
初期パスワードでログインすることはできますが、そのまま使い続けようとすると、
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
というエラーが表示されるので、パスワードを変更します。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '(パスワード)';
ついでにパスワードの有効期限のデフォルトが無期限であることを確認します。
mysql> SELECT @@default_password_lifetime;
+-----------------------------+
| @@default_password_lifetime |
+-----------------------------+
| 0 |
+-----------------------------+
(3) /etc/my.cnfの設定
■旧MySQLの認証プラグインを使用(コメントを外す)
default-authentication-plugin=mysql_native_password
(4) MySQLの起動
設定が完了したら、MySQLのサービスを起動します。
# systemctl start mysqld.service
(5) 自動起動設定
サーバを再起動した場合に自動的にサービスが起動するようにします。
# systemctl enable mysqld.service
(6) mysql_secure_installationの実行
MySQLのセキュリティを向上させるために「mysql_secure_installation」を実行します。
# /usr/bin/mysql_secure_installation
このコマンドは、
- rootユーザのパスワード文字列を設定する
- VALIDATE PASSWORD PLUGINをインストール(Yes|No)
- anonymousユーザを削除する(Yes|No)
- リモートからのrootログインを禁止する(Yes|No)
- TESTデータベースを削除する(Yes|No)
- 権限を再読み出しする(Yes|No)
という作業を対話式に順次実行します。
4. その他のコマンド
(1) ユーザ作成
CREATE USER '(ユーザID)'@'localhost' IDENTIFIED WITH mysql_native_password BY '(パスワード)';
GRANT ALL PRIVILEGES ON (テーブル名).* TO '(ユーザID)'@'localhost';
※※【注意事項】※※
「my.cnf」で「skip-name-resolve」を指定している場合には、ホストの名前解決ができないため「localhost」ではエラーとなる。その場合には「127.0.0.1」と記述すること。
5. cronでの実行の場合
定期バックアップなどでコマンドラインからMySQLを実行する場合に、パスワードをコマンドラインに含めると警告が発生しますし、またセキュリティ上問題があります。
そこで、設定ファイルを作成して、コマンドラインから読込みます。
(1) 設定ファイルの作成
「/etc/.mysql_config」という設定ファイルを作成します。
内容は以下の通りです。
[client]
user = root
password = (パスワード)
host = localhost
「root」以外読めないようにします。
# chmod 400 /root/.mysql_config
(2) コマンドラインでの実行
「--defaults-extra-file」オプションで設定ファイルを読み込みます。
【例】
for DBNAME in `ls -p /var/lib/mysql | grep / | tr -d /`
do
# mysqldump
if [ "$DBNAME" = 'performance_schema' ]
then
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
else
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --events --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
fi
done
6. MySQLのコマンド
(1) mysqldump
■データベースを出力
mysqldump --defaults-extra-file=/root/.mysql_config -c -skip-extended-insert (DB名) > (出力ファイル名)
■テーブルを指定して出力
mysqldump --defaults-extra-file=/root/.mysql_config -c -skip-extended-insert (DB名) (テーブル名) > (出力ファイル名)
(2) mysql
■ダンプファイルをインポート
mysql --defaults-extra-file=/root/.mysql_config (DB名) < (ダンプファイル名)
最終更新:2021年04月05日 08:26