ハマる前に理解するMySQL8の初期設定

こんにちは、汐留みずほです。

MySQL8を使い始めて、いくつかハマったポイントがあったので共有したいと思います。

MySQL8のインストール

まずはMySQL8のインストール手順を記載します。CentOS7にインストールすることを想定した手順です。

CentOS7にデフォルトでインストールされているMariaDBを削除します。

# yum remove -y mariadb-libs.x86_64
# rm -rf /var/lib/mysql

MySQL8をインストールします。

# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# yum -y install mysql-community-server

MySQL8を起動します。2行目はOS起動時に自動起動する設定です。

# systemctl start mysqld
# systemctl enable mysqld

初期パスワード

以前はCentOSのMySQLはrootパスワードがブランクでしたが、MySQL5.7からは、起動時にランダムで初期パスワードが生成されるようになっています。
初期パスワードは/var/log/mysqld.logファイルに書き込まれており、以下のコマンドで確認できます(赤字部分)。

# cat /var/log/mysqld.log | grep root
2019-05-10T03:03:18.756712Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ************

mysql_secure_installationコマンドを用いてrootユーザーのパスワードを変更します。パスワードを変更しないとMySQL上でコマンドが実行できませんのでご注意ください。

# mysql_secure_installation

MySQLにログインします。

# mysql -u root -p

データベースの作成とユーザーの作成

MySQL8以前はgrant文でユーザーの作成と権限の付与を同時におこなうことができましたが、MySQL8からは別々に実行しなければならないよう変更されました。

mysql> create database wordpress character set utf8 collate utf8_bin;
mysql> create user 'wordpress'@'localhost' identified  by 'new-password';
mysql> grant all on wordpress.* to 'wordpress'@'localhost' with grant option;
mysql> FLUSH PRIVILEGES;
mysql> quit;

まとめ

いきなりMySQL8を使おうとすると以前のバージョンからの変更点が多く、私も実際にハマってしまいましたが、ポイントをおさえておけば怖くはありませんので、積極的に新しいバージョンを使っていきましょう。