article-thumbnail

CentOS6にMySQL8系のインストールと初期設定方法まとめ

カテゴリ: CentOS

タグ: MySQL8,CentOS6

2020-10-28 00:18:51

【概要】

CentOS6系のサーバーにMySQL8系をインストールする方法をまとめます。


【詳細】

1. レポジトリ関係

i. レポジトリインストール

yum install yum-utils
yum install https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpm


ii. レポジトリ有効化

yum-config-manager --enable mysql80-community


2. MySQLインストール

yum install mysql-server


3. MySQLインストールとバージョン確認

i. インストール確認

which mysql

出力結果

/usr/bin/mysql


ii. MySQLバージョン確認

mysql -V

出力結果例

mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)


4. MySQL起動と自動起動設定

i. 起動

service mysqld start


ii. 自動起動設定

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) : y

anonymous ユーザーの削除なので「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) : y

testデータベースの削除 (存在する場合)するので「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:  utf8mb4
Db   characterset:  utf8mb4
Client characterset:  utf8mb4
Conn. 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用パスワード';