この記事は、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を使える環境になった・・・・かな。