MySQL

MySQLのrootユーザーを消してしまったら

間違って消すことってありますよね!

っということで、rootを復活させる方法です。

バックエンドの人じゃないので、参考程度

再現環境

TeraTermからサーバー接続

概要

  1. mysqlを停止
  2. mysqld_safeのパス無しモードで起動
  3. rootユーザーを追加
  4. rootユーザーに権限追加
  5. mysqlを再起動

手順1

  1. mysqlを停止
  2. mysqld_safeのパス無しモードで起動

TeraTermからサーバーに接続し、下記コマンドを実行

service mysqld stop
/usr/bin/mysqld_safe --skip-grant-tables

すると、コマンドを受け付けなくなりますので、そのTeraTermはそのまま放置

*「/usr/bin/mysqld_safe」のパスは環境によって違います。

手順2

  1. rootユーザーを追加
  2. rootユーザーに権限追加

新しくTeraTermでroot接続し、下記コマンドでmysqlを実行

mysql

起動できたら下記コマンドでmysqlを選択

use mysql

次にrootユーザーを追加(passの部分はちゃんと書き換えてね)

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

 

次に権限追加ですが、エラーがでたら厄介なので、一行ではなく複数行で実行
(コピペすると改行もコピーしてくれるので、全部勝手に実行してくれます。)

update user set setSelect_priv='Y' where User='root';
update user set Insert_priv='Y' where User='root';
update user set Update_priv='Y' where User='root';
update user set Delete_priv='Y' where User='root';
update user set Create_priv='Y' where User='root';
update user set Drop_priv='Y' where User='root';
update user set Event_priv = 'y' where User='root';
update user set Trigger_priv = 'y' where User='root';
update user set Reload_priv='Y' where User='root';
update user set Shutdown_priv='Y' where User='root';
update user set Process_priv='Y' where User='root';
update user set File_priv='Y' where User='root';
update user set Grant_priv='Y' where User='root';
update user set References_priv='Y' where User='root';
update user set Index_priv='Y' where User='root';
update user set Alter_priv='Y' where User='root';
update user set Show_db_priv='Y' where User='root';
update user set Super_priv='Y' where User='root';
update user set Create_tmp_table_priv='Y' where User='root';
update user set Lock_tables_priv='Y' where User='root';
update user set Execute_priv='Y' where User='root';
update user set Repl_slave_priv='Y' where User='root';
update user set Repl_client_priv='Y' where User='root';
update user set Create_view_priv='Y' where User='root';
update user set Show_view_priv='Y' where User='root';
update user set Create_routine_priv='Y' where User='root';
update user set Alter_routine_priv='Y' where User='root';
update user set Create_user_priv='Y' where User='root';

エラーが無ければ、最後にmysqlを閉じる

exit;

 

そんでもって、mySQLの再起動

service mysqld restart

 

お疲れ様でした、これで大丈夫だと思います。

放置していたTeraTremさんもMySQLの再起動のタイミングで、コマンド受け付けない状態から脱出してると思うので
そのまま閉じちゃって大丈夫です。

Leave a Reply

最初のコメントを頂けますか?

更新通知を受け取る »
avatar
wpDiscuz