てぃーだブログ › とりあえずやってみる! › MySQL › MySQLのrootユーザーが消えた時の対処法

2013年01月09日

MySQLのrootユーザーが消えた時の対処法






先日、MySQLのユーザーテーブルの中身を全て消して

しまったとの連絡が・・・



えーー!?と思い確認したところ、通常のユーザーは

おろか、rootでもログイン出来ない。

自分も初めてのケース(まさかユーザーテーブルを

消す人がいるなんて・・)
だったので試行錯誤して

なんとか解決したので、手順を書いておく事にしました。

今後も同じような事が無いとも限らないですしね。




ちなみにOSはCentOS、MySQLはVer. 5.1

以下はSSHでコンソール上で操作。

■まずはMySQLをストップ

# /etc/init.d/mysqld stop

■次にmysqld_safeで立ち上げる事により
 認証をパスする事が出来ます。

# /usr/bin/mysqld_safe --skip-grant-tables

※コマンド入力後はそのままで、別にコンソール画面を
 立ち上げる。

■別に立ち上げたコンソールからrootでログインする。

# mysql -u root

■「mysql」データベースへ移動する。

mysql> use mysql

■root ユーザーをインサートする

mysql> insert into user (user, host, password) values('root', 'localhost', PASSWORD('pass'));

■rootユーザーに権限を追加する。
とりあえず全権限を与えました。

mysql> 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',
Event_priv='Y',
Trigger_priv='Y',
Create_user_priv='Y'
where User='root';


■情報をflushする

mysql> flush privileges;

これでrootユーザーを作ることが出来ました。

あとはexit してmysqlから抜けます。

■mysqld_safeのプロセスを切るためにプロセスIDを確認します。

# ps aux

■mysqld_safeのプロセスIDをkill

# kill プロセスID

これで完了です。

あとは通常通りmysqldをスタートさせて、rootで

ログイン後、ユーザーを追加出来るようになりました。



いや~しかし、こういうトラブルは二度と起こしてほしくないと思う反面、

トラブルがあって、それを解決してこそエンジニアは成長できるから

トラブルと取るかチャンスと取るかはエンジニア次第ですね。



同じカテゴリー(MySQL)の記事
MySQL5.6
MySQL5.6(2013-02-06 19:50)

InnoDBって難しい
InnoDBって難しい(2013-02-04 20:32)


Posted by フクタケ at 21:00│Comments(0)MySQL
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。