ちーさんのイイネあつめ

世界中のイイネを求めて

MySQLのrootユーザ削除しちゃって大変なことになった件

年度末でひどい忙しさなので、同時並行で全然違う作業してたら、消しちゃいけないもん消しちゃって大変なことになった。

復旧方法はネットですぐに見つかったけれど、なにぶんlinux初心者。

別の所で詰まって、まじめに泣きそうだったので、手順メモメモ。

内容はタイトルの通り。

 

[環境](バージョン確認してない)

CentOS

MySQL

 

[手順] ※パスは環境ごとに合わせる

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