CentOS6にMySQL8系のインストールと初期設定方法まとめ
【概要】CentOS6系のサーバーにMySQL8系をインストールする方法をまとめます。【詳細】1. レポジトリ関係i. レポジトリインストールyum install yum-utilsyum install https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpmii. レポジトリ有効化yum-config-manager --enable mysql80-community2. MySQLインストールyum install mysql-server3. MySQLインストールとバージョン確認i. インストール確認which mysql出力結果/usr/bin/mysqlii. MySQLバージョン確認mysql -V出力結果例mysqlVer 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)4. MySQL起動と自動起動設定i. 起動service mysqld startii. 自動起動設定chkconfig mysqld on【初期設定】1. MySQLのroot@localhostの一時パスワードを調べるgrep 'temporary password' /var/log/mysqld.log・出力結果例2019-09-10T06:31:50.438223Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: fmWwkEMeq9.N上記の最後に出力された「fmWwkEMeq9.N」がroot@localhostの一時パスワードです。2. MySQLの初期設定下記のコマンドはMySQLの最低限のセキュリティ設定を行うコマンドです。コマンドを実行するとパスワードの再設定等の各種設定に行います。mysql_secure_installation・rootのパスワードを変更Change the password for root ? ((Press y|Y for Yes, any other key for No) : yここで新規設定したパスワードがMySQLのroot権限を使用する場合に必要なるのでメモを取っておいて下さい。・変更したパスワードで設定を進めますか?Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y変更したパスワードで進めるので「y」。・anonymous ユーザーの削除しますか?Remove anonymous users? (Press y|Y for Yes, any other key for No) : yanonymous ユーザーの削除なので「y」。・リモートからrootユーザーでアクセス拒否しますか?Disallow root login remotely? (Press y|Y for Yes, any other key for No) : yこの質問は要注意です。セキュリティを高めるのであればリモートからのrootログインを拒否した方が良いので「y」を選択します。しかし、リモートからrootログインを許可したいシステムの場合は「n」を選択して下さい。・testデータベースの削除しますか?Remove test database and access to it? (Press y|Y for Yes, any other key for No) : ytestデータベースの削除 (存在する場合)するので「y」。・設定の即時反映しますか?Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y反映させる為、「y」。3. MySQLログインとユーザー確認i. MySQLログインmysql -u root -pパスワード「hogehoge1234」ii. ユーザー確認SELECT user, host, plugin FROM mysql.user;出力結果+------------------+-----------+-----------------------+| user| host| plugin|+------------------+-----------+-----------------------+| mysql.infoschema | localhost | caching_sha2_password || mysql.session| localhost | caching_sha2_password || mysql.sys| localhost | caching_sha2_password || root| localhost | caching_sha2_password |+------------------+-----------+-----------------------+4. MySQLのログイン認証を変更[概要]MySQL8系から「caching_sha2_password」認証がデフォルトになりました。MySQL8以前のバージョンの認証は「mysql_native_password」です。また、LaravelでmigrateしようとしたりDB接続しようとする時にエラーが起きる原因となります。よって、以前の「mysql_native_password」認証に変更することをお勧めします。もし、「caching_sha2_password」認証で問題ない場合はこの項目は飛ばして下さい。[手順]i. rootユーザーの認証変更ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hogehoge1234';ii. 変更確認SELECT user, host, plugin FROM mysql.user;出力結果+------------------+-----------+-----------------------+| user| host| plugin|+------------------+-----------+-----------------------+| mysql.infoschema | localhost | caching_sha2_password || mysql.session| localhost | caching_sha2_password || mysql.sys| localhost | caching_sha2_password || root| localhost | mysql_native_password |+------------------+-----------+-----------------------+5. MySQLの文字コード確認※ MySQLにログインした状態で下記コマンドを実行します。status出力結果--------------......Server characterset:utf8mb4Dbcharacterset:utf8mb4Client characterset:utf8mb4Conn.characterset:utf8mb4......--------------6. ユーザー作成rootユーザー以外を作成したい場合はこの項目を実行して下さい。ここでは例としてdevelop@localhostユーザーを作成します。・developユーザー作成CREATE USER 'develop'@'localhost' IDENTIFIED BY 'develop用パスワード';・developユーザーに権限付与GRANT ALL ON *.* TO 'develop'@'localhost' WITH GRANT OPTION;・developユーザーの認証をmysql_native_password認証に変更するALTER USER 'develop'@'localhost' IDENTIFIED WITH mysql_native_password BY 'develop用パスワード';