mysqlをアップグレードしたらば。
mysql> FLUSH PRIVILEGES; ERROR 1146 (42S02): Table 'mysql.procs_priv' doesn't exist
こういうエラーが出るようになった。
たぶんmysqlを4→5にアップグレードしちゃったことが原因。yum一発アップグレードは怖いなぁ。
ともあれ、Table ‘mysql.procs_priv’ doesn’t existでググったら、
MySQL Bugs: #9934: DROP USER fails if mysql.procs_priv doesn’t exists
というのが出てきて、冷たいことを言われた末に、
If you encounter this after an update, run mysql_upgrade_shell command: it will create the missing table.
(アップグレード後にこのエラーが出たんだったら、mysql_upgrade_shellコマンドを走らせろ。それで欠けてるテーブルが作成されるから)
ということになっている。
(当然バックアップをとってから)やってみた。
[furukawa@www ~]$ sudo mysql_upgrade_shell --verbose --datadir=/var/lib/mysql --user=root --password=**** Running /usr/bin/mysqlcheck --password=**** --check-upgrade --all-databases --auto-repair --user=root expressionengine.exp_actions error : Table upgrade required. Please do "REPAIR TABLE `exp_actions`" to fix it! expressionengine.exp_captcha error : Table upgrade required. Please do "REPAIR TABLE `exp_captcha`" to fix it! expressionengine.exp_categories error : Table upgrade required. Please do "REPAIR TABLE `exp_categories`" to fix it! expressionengine.exp_category_field_data :(略) mysql.time_zone_transition_type OK mysql.user OK This script updates all the mysql privilege tables to be usable by the current version of MySQL done
REPAIR TABLEする必要があるらしい。
[furukawa@www ~]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 82 Server version: 5.0.68 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use expressionengine; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> REPAIR TABLE `exp_actions`; +---------------------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------------------------+--------+----------+----------+ | expressionengine.exp_actions | repair | status | OK | +---------------------------------+--------+----------+----------+ 1 row in set (0.00 sec) :(略)
以下、この調子でテーブルを片っ端からREPAIRしていく。
columns_priv以降のテーブルはmysqlデータベースに入っている。
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> REPAIR TABLE `columns_priv`; +--------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +--------------------+--------+----------+----------+ | mysql.columns_priv | repair | status | OK | +--------------------+--------+----------+----------+ 1 row in set (0.00 sec) :(略) mysql> exit Bye
[furukawa@www ~]$ sudo mysql_upgrade_shell --verbose --datadir=/var/lib/mysql --user=root --password=**** mysql_upgrade already done for this version This script updates all the mysql privilege tables to be usable by the current version of MySQL done [furukawa@www ~]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 84 Server version: 5.0.68 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
これでいいらしい。あんまり自信がないのだけれど、エラーメッセージでググった時に日本語の情報が出てこなかったので、とりあえずブログにあげておきます。