[メモ][MySQL] rootユーザーの全権限を消してしまったときの対処方法

rootユーザーの全権限をREVOKE文で消してしまいかなり冷や汗かいた。

REVOKE ALL ON *.* FROM root@'%';

対処したときの方法をメモしとく。

mysqlサーバーをシングルユーザ-モード?っぽいモードで動かす。

まずmysqlサーバーを止める

$ sudo /etc/init.d/mysql stop

次に /etc/my.cnfの[mysqld]の設定を変更し、Linuxのシングルユーザーモードっぽいモードで動かす。

skip-grant-tables

#このオプションつけたときのmysqlサーバーって、何て呼ぶんだか分からん。
mysqlサーバーを再起動。これでシングルユーザーモードmysqlサーバーが動く。

$ sudo /etc/init.d/mysql start

rootユーザーの権限を復活

mysqlデータベースにアクセス

$ mysql 
mysql> use mysql;

rootユーザーの全権限をUPDATE文で元に戻す。

UPDATE user SET
Select_priv='Y',
Insert_priv='Y',
Update_priv='Y',
Delete_priv='Y',
Create_priv='Y',
Drop_priv='Y',
Reload_priv='Y',
Shutdown_priv='Y',
Process_priv='Y',
File_priv='Y',
Grant_priv='Y',
References_priv='Y',
Index_priv='Y',
Alter_priv='Y',
Show_db_priv='Y',
Super_priv='Y',
Create_tmp_table_priv='Y',
Lock_tables_priv='Y',
Execute_priv='Y',
Repl_slave_priv='Y',
Repl_client_priv='Y',
Create_view_priv='Y',
Show_view_priv='Y',
Create_routine_priv='Y',
Alter_routine_priv='Y',
Create_user_priv='Y'
WHERE User='root';

mysqlサーバーを元に戻す

mysqlサーバーをシングルユーザーモード?にしたときと逆のことをする。

$ sudo /etc/init.d/mysql stop

/etc/my.cnfの[mysqld]の以下の設定を削除。

skip-grant-tables

mysqlサーバーを再起動。

$ sudo /etc/init.d/mysql start