さてさて、ついにMySQL5.7がリリースされましたね!
リリースされてはや1週間というところですが、
さっそくいじってみよう!
ということでまずはインストールから。
環境は以下の通り。
ESXi 5.5
Cent OS 7.1
MySQL 5.7.9 (GA!)
Cent OS 7を使うのはほとんど始めてで、
本当は6でやりたかったんですが、
後々ためそうと思っているMySQL RouterのインストールRPMが7系しかなかったので、
仕方なく7系にしました。
まあいずれは使うわけだし、一概に不本意な訳でもない。
バイナリのダウンロードはいつもの通り、dev.mysqlから。
5.7がGAになったので、デフォルトで5.7が表示されるようになってますね。
さっそくmysql-serverとmysql-clientとmysql-shared-compatをダウンロードして、、、ん?
shared-compatがない。
なんで?
rpm-bundleの中にも入ってなかったし、
なんでないんだ?
Cent7になってmysql-libsではなくてmariadb-libsになったけど、
相変わらず今のmysql-libsとは競合するし。
考えていてもしかたないので、無理やりmariadb-libsを引っこ抜く。
もろともに、post-fixも抜かれてしまったが、まあ使わないしいいだろう。
結果、導入したパッケージは以下の通り。
shared-compatを入れれば、commonとlibsは要らないかもしれない。
[root@cent7-mysql57-1 ~]# rpm -qa | grep -i mysql mysql-community-common-5.7.9-1.el7.x86_64 mysql-community-client-5.7.9-1.el7.x86_64 mysql-community-libs-5.7.9-1.el7.x86_64 mysql-community-server-5.7.9-1.el7.x86_64
※12/5追記
正規のインストール方法、調べました。
5.7ではshared-compatではなく、libs-compatという名前になっているらしいです。
で、libs-compatはcommonとlibsにも依存するので、
以下の順番でインストールすれば問題なく入ります。
[root@cent7-mysql57-1 ~]# rpm -Uvh mysql-community-common-5.7.9-1.el7.x86_64 mysql-community-libs-5.7.9-1.el7.x86_64 mysql-community-libs-compat-5.7.9-1.el7.x86_64 [root@cent7-mysql57-1 ~]# rpm -ivh mysql-community-client-5.7.9-1.el7.x86_64 [root@cent7-mysql57-1 ~]# rpm -ivh mysql-community-server-5.7.9-1.el7.x86_64
(この方法で入れていればおれのpost-fixも犠牲にならずに済んだ、、、)
さーて、MySQLも入ったことだし、
早速接続!
しようと思ったら起動してなかったので、
service mysql startで、、、
ん?
[root@cent7-mysql57-1 ~]# service mysql start Redirecting to /bin/systemctl start mysql.service Failed to issue method call: Unit mysql.service failed to load: No such file or directory.
そんなサービスはない、とな?
サービス名変わったのか?
あと、Cent OS 7ではserviceコマンドじゃなくて、systemctlコマンドなんだっけ、、、
[root@cent7-mysql57-1 ~]# systemctl start mysqld.service [root@cent7-mysql57-1 ~]#
無反応かい!
でもまあ、psコマンドでみたら起動してたし、よしとしよう。
接続するにはroot@localhostユーザのPWが必要。
これは、5.7ではエラーログに書かれている(←これは知ってたw)
[root@cent7-mysql57-1 ~]# cat /var/log/mysqld.log | grep -i password 2015-10-30T19:47:14.773877Z 1 [Note] A temporary password is generated for root@localhost: oilnar.Qp79s
うむうむ。それでいいんだ。
さあ、接続。
root@cent7-mysql57-1 ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.9 Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
きたきた。
Server version: 5.7.9
ってとこが注目ですな。
パスワード変えないとなにもできないので、変更する。
mysql> set password for 'root'@'localhost'=password('root'); ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
そ、そんなポリシーできたのかい。
どうやら、大文字小文字数字記号を含む8文字以上、という縛りらしい。
結構厳しいな、、、
これはvalidate_passwordというプラグインが導入されたためらしい。
これを外そうにもパスワード一旦変更しないと何もオペレーションできないので、
適当なパスワード決めて、オペレーションスタート。
まずはvalidate_passwordをアンインストール。じゃまだし。
mysql> uninstall plugin validate_password; Query OK, 0 rows affected (0.00 sec)
さあ、さっきのPWだ。
mysql> set password for 'root'@'localhost'=password('root'); Query OK, 0 rows affected, 1 warning (0.00 sec)
っしゃあ!
さて、あと他の変更点をいくつか見てみよう。
【パスワード有効期限360日】
MySQL 5.7で一番有名なパラメータ変更といっても過言ではない笑
mysql> show global variables like 'default_password_lifetime'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | default_password_lifetime | 360 | +---------------------------+-------+ 1 row in set (0.00 sec)
ほ、ほんとだ、、、
これは0(無期限)にしておかないとね、、、
あとはコレか。
【ログのタイムスタンプがUTC】
mysql> show global variables like 'log_timestamps'; +----------------+-------+ | Variable_name | Value | +----------------+-------+ | log_timestamps | UTC | +----------------+-------+ 1 row in set (0.01 sec)
なんでUTCなんだよ。
ここは日本やぞ。
今までどおりにするには、
log_timestamps=system
とすればいい。
ほかにもいろいろあるけど、
それはyoku0825さんのslideshareを見たほうが早いので、
こちらをご覧ください。
そんな訳で、今回はとりあえずMySQL 5.7を入れてみました。
最近MySQLは新しい製品色々出てるから、今後はそれらを使ってみようかな。
いや、まずはマルチソースレプリケーションだな。
マルチスレッドスレーブにも対応したらしいし、
それも試してみよう。
きょうはここまで。
では。