MySQLのrootユーザ削除しちゃって大変なことになった件
年度末でひどい忙しさなので、同時並行で全然違う作業してたら、消しちゃいけないもん消しちゃって大変なことになった。
復旧方法はネットですぐに見つかったけれど、なにぶんlinux初心者。
別の所で詰まって、まじめに泣きそうだったので、手順メモメモ。
内容はタイトルの通り。
[環境](バージョン確認してない)
[手順] ※パスは環境ごとに合わせる
1.mysql の停止
/etc/init.d/mysqld stop
2.権限無視モードでmysql起動
/usr/bin/mysqld_safe --skip-grant-tables
※コマンド返って来ないけど、無視して別のコマンドウィンドウ立ち上げ
3.rootでDB接続
mysql -u root
4.rootユーザ新規作成&権限付与
use mysql;
insert into user (user, host, password) values('root', 'localhost', PASSWORD('pass'));
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', Event_priv = 'Y', Trigger_priv = 'Y' where User = 'root';
5.DB切断
flush privileges;
exit;
6.mysql強制停止
ps aux | grep mysqld_safe
kill -KILL [PID]
7.mysqlを通常起動
/etc/init.d/mysqld start
こんな感じで復活。危機一髪だったぜ( ´Д`)=3
参考サイト
http://blog.katsuma.tv/2007/07/mysql_root_reset.html
http://d.hatena.ne.jp/hayori/20080407/1207553413
http://sasuke.main.jp/mysqlrootpass.html