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 リポジトリがインストールされます。
(略)
更新中 / インストール中...
1:mysql80-community-release-el7-1 ################################# [100%]
MySQL 8.0 のインストール
MySQL 8.0 をインストールします。(2018年5月3日時点のバージョンは 8.0.11)
yum install mysql-community-server
MySQL 8.0 の設定と起動
以下の設定を MySQL の設定ファイルに追加します。
vi /etc/my.cnf
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
起動
自動起動設定
mysql_secure_installation の実行
root ユーザーの初期パスワードの確認(初期パスワードはそのまま使うことはできませんので変更が必要です)
(略)
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を削除してくれます。
(略)
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 サーバーにログインできるようになります。
Enter password: <新しいパスワード>
おわりに
前バージョン MySQL 5.7 のリリース時は、デフォルトでパスワードの有効期限が360日になるなど(5.7.11以降は無期限になりました)検索ワードに MySQL 5.7 を入力すると「罠」とサジェストされるほど大きな変更があり大騒ぎでしたが、MySQL 8.0 ではそのようなことはなさそうですね。
コメント