こんにちは、管理課でありながらエンジニア(?)のtetsuです。
MySQLでrootパスワードを紛失したり、またはパスワードが行方不明になったりしたとき、MySQLへの接続が出来なくなったら冷や汗ものですよね?
よくこんなエラーに遭遇します。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
今回は、このような場合でも、MySQLのrootのパスワードをリセットする方法を紹介します。
サーバの環境はCentOS、MySQL上での説明になります。
MySQLでrootパスワードを忘れた場合の対処方法
サーバへ接続
まずはサーバへSSH接続をします。これを行えないと話が始まりません。笑
SSH接続については省略します。
起動しているMySQLを停止
MySQLサービスを下記のコマンドで一旦停止させます。
service mysqld stop
MySQLをセーフモードで起動
停止したMySQLサービスを下記コマンドを使用してセーフモードで起動させます。
mysqld_safe --skip-grant-tables &
MySQLへrootでログイン
セーフモードで起動したMySQLに下記コマンドを使用してrootでログインします。
mysql -u root
rootのパスワードのリセット
無事にMySQLへログインできたら、下記のクエリーでrootパスワードを再設定します。
use mysql;
update user set password=PASSWORD("ここにパスワードを記述") where User='root';
flush privileges;
ここで、「Query OK」と表示されれば完了です。
パスワードのリセットが完了したので、下記コマンドでMySQLからログアウトします。
quit
セーフモードのMySQLを停止
最後に、セーフモードで起動しているMySQLを一度停止させ、下記コマンドで通常モードで再起動します。
service mysqld stop
service mysqld start
以上で、作業は終わりです。再度rootでログインできるかどうかをお試しください。
最後に
基本的にはrootでMySQLへの接続は行うことは少ないとは思いますが、使ってない分パスワードを紛失してしまう場合もあるので、しっかり管理をするようにしましょう!
mysql> quit
Bye!!
LIGでは、エンジニアを絶賛募集中!
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。