この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの14日目です.
13日目の日記では、とりあえず MySQL 5.6 から 5.7 にバージョンを上げたところで終了した。
よくよく考えてみれば、システム系のテーブルの変更が含まれているのだから、そのまま動かして良いわけがない。
ということで、日記が2日に分断してしまったが、今日は、アップグレード後のスクリプトについて書いてみる。
MySQL :: MySQL 5.7 Reference Manual :: 4.4.7 mysql_upgrade — Check and Upgrade MySQL Tables
マニュアル 4.4.7 に紹介されている mysql_upgrade を実行する必要があるようだ。
なお、マニュアルには mysql_upgrade の色々なオプションについて説明があるので、必要に応じてよく読んで使うと良いだろう。
今回は、オプションなしの素のままで実行してみる。
# mysql_upgrade Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK :(略) Upgrade process completed successfully.
アソビゴコロを出して、試しにもう一回実行してみると、
# mysql_upgrade Checking if update is needed. This installation of MySQL is already upgraded to 5.7.10, use --force if you still need to run mysql_upgrade
もういいらしい(笑)。
# /etc/init.d/mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ]
この mysql_upgrade スクリプトの実行により、分かりやすいところでは mysql.user テーブルの定義に変化が見られる。
スクリプト実行前:
mysql> DESC USER;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
:(略)
スクリプト実行後:
mysql> DESC USER;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
:(略) Password カラムがなくなったのが、わかる。
User名のカラムも、これまでの16文字から32文字へと拡大されていることにも気づくだろう。
Passwordカラム廃止については、Yoku0825さんが、今年(2015年)の3月の私の誕生日に書いてくれた日記にて紹介されている。
日々の覚書: MySQL 5.7.6でmysql.userテーブルのパスワードのカラム名がなんか変わった
ただし、Yoku0825さんが書かれた MySQL 5.7.6 の時点では Userカラムはまだ16文字のままだった模様。変化の足跡が見られて、面白い。
これで安心して 5.7を使える環境になった・・・・かな。