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)
これでいいらしい。あんまり自信がないのだけれど、エラーメッセージでググった時に日本語の情報が出てこなかったので、とりあえずブログにあげておきます。