MySQL 8.0 を yum でインストール&設定メモ

Linux
Linux
スポンサーリンク

2018年4月19日、MySQL 8.0 の正式版(General Availability)がリリースされました。MySQL 8.0 は、MySQL 5.7 と比較してパフォーマンスが最大2倍高速になり、NoSQL機能の追加、SQLウィンドウ関数の実装、JSONデータへの対応強化、GIS地理サポート、空間インデックスおよび空間関数のサポートなどなど便利な機能が多数追加されています。そこで今回は、CentOS7.4 に MySQL 8.0 を yum リポジトリからインストールして、起動させるまでの設定手順をメモしておきました。

MySQL の yum リポジトリのインストール

まずはじめに MySQL公式の yum リポジトリをインストールします。

Download MySQL Yum Repository」のページから、該当するOSの「Download」ボタンをクリックします。今回のインストール先のOSは Red Hat クローンの CentOS7 なので「Red Hat Enterprise Linux 7」の「Download」ボタンをクリックします。

ログインが求められますが、ページ下の「No thanks, just start my download.」をクリックすれば、yum リポジトのRPMパッケージがダウンロードできます。CentOS7から直接インストールした方が簡単なのでダウンロードURLをコピーしておきます。

CentOS7上 で「rpm -ivh」コマンドに続けてコピーしたダウンロードURLを入力して実行すれば、MySQL の yum リポジトリがインストールされます。

rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
(略)
更新中 / インストール中...
1:mysql80-community-release-el7-1 ################################# [100%]

MySQL 8.0 のインストール

MySQL 8.0 をインストールします。(2018年5月3日時点のバージョンは 8.0.11)

yum install mysql-community-devel
yum install mysql-community-server

MySQL 8.0 の設定と起動

以下の設定を MySQL の設定ファイルに追加します。
vi /etc/my.cnf

# ログのタイムゾーンの設定(初期値:UTC)
log_timestamps=SYSTEM
 
# クライアントの文字セットの設定を無視する
skip-character-set-client-handshake
 
# デフォルトの文字セット(初期値:utf8mb4 >= 8.0.1)
character-set-server=utf8mb4
 
# タイムスタンプのデフォルト値に関する設定(初期値:ON >= 8.0.2)
explicit_defaults_for_timestamp=ON

MySQL 8.0 の大きな変更点として、デフォルトの文字セット(character-set-server)が、latin1 から utf8mb4 に変わりました。また explicit_defaults_for_timestamp の初期値が ON(OFFは非推奨)になっています。(なのでこの2行は設定しなくても構いません)

MySQL 8.0 では他にも default-authentication-plugin などの初期値(Default Value)が変更されていますので、公式マニュアルで確認しておくことをオススメします。

公式マニュアル:5.1.7 Server System Variables | MySQL 8.0 Reference Manual

起動

systemctl start mysqld

自動起動設定

systemctl enable mysqld

mysql_secure_installation の実行

root ユーザーの初期パスワードの確認(初期パスワードはそのまま使うことはできませんので変更が必要です)

grep password /var/log/mysqld.log
(略)
2018-05-03T03:41:20.836244+09:00 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: <初期パスワード>

この後に設定する root ユーザーの新しいパスワードは、8文字以上で英数大文字小文字と記号が含まれていないとポリシー違反で弾かれてしまいますので注意です。

参考資料:6.5.3.2 Password Validation Options and Variables | MySQL 8.0 Reference Manual

mysql_secure_installation コマンドに「--use-default」オプションを付けてを実行します。root ユーザーのパスワード変更や不要なユーザーやDBを削除してくれます。

mysql_secure_installation --use-default
 
(略)
Enter password for user root: <初期パスワード>
 
The existing password for the user account root has expired. Please set a new password.
 
New password: <新しいパスワード>
 
Re-enter new password: <新しいパスワード>
(略)

以上で MySQL サーバーにログインできるようになります。

mysql -u root -p
Enter password: <新しいパスワード>

おわりに

前バージョン MySQL 5.7 のリリース時は、デフォルトでパスワードの有効期限が360日になるなど(5.7.11以降は無期限になりました)検索ワードに MySQL 5.7 を入力すると「罠」とサジェストされるほど大きな変更があり大騒ぎでしたが、MySQL 8.0 ではそのようなことはなさそうですね。

コメント

タイトルとURLをコピーしました