MySQLでrootなのにgrantコマンドが実行できない場合の対処法
rootでログインしてユーザーを増やそうと思ったら
と怒られた。mysql> grant all on *.* to "myuser"@"192.168.0.0/255.255.255.0";
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
調べてみたら色々対処法があるみたいだが、とりあえずエラーログを見てみると
120801 9:43:15 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
言われた通りmysql_upgradeを実行すると
それ以外にも幾つかテーブルが足りなかったようで、作ってくれた。[root@localhost ~]# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
Running 'mysqlcheck with default connection arguments
mysql.columns_priv OK
mysql.db OK
mysql.func OK
mysql.general_log OK
mysql.help_category
error : Table upgrade required. Please do "REPAIR TABLE `help_category`" or dump/reload to fix it!
mysql.help_keyword
error : Table upgrade required. Please do "REPAIR TABLE `help_keyword`" or dump/reload to fix it!
mysql.help_relation OK
mysql.help_topic
error : Table upgrade required. Please do "REPAIR TABLE `help_topic`" or dump/reload to fix it!
mysql.host OK
mysql.proc
error : Table upgrade required. Please do "REPAIR TABLE `proc`" or dump/reload to fix it!
mysql.procs_priv OK
mysql.servers OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name
error : Table upgrade required. Please do "REPAIR TABLE `time_zone_name`" or dump/reload to fix it!
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OKRepairing tables
mysql.help_category OK
mysql.help_keyword OK
mysql.help_topic OK
mysql.proc OK
mysql.time_zone_name OK
Running 'mysql_fix_privilege_tables'...
OK
再度grantしてみる
今度はOKmysql> grant all on *.* to "myuser"@"192.168.0.0/255.255.255.0";
Query OK, 0 rows affected (0.00 sec)
入れたrpmが足りなかったのか、mysql_install_dbがおかしかったのか管理テーブルが足りなかったのが原因のようだ。