MySQLのrootパスワードを思い出す方法(再設定も)決定版

しまった、MySQLのrootパスワードがわからなくなったぞ!
そんな時にまず試したい方法がこれ。

rootの.my.cnfを見る

MySQLのログローテーション用に、/root/.my.cnfにrootパスワードが記述されているのだ。

[dacelo@space ~]$ sudo cat /root/.my.cnf
[mysqladmin]
password = "RBjlm20dc+ga"
user = root

これでめでたしめでたし。
しかし環境によってはこれがないかもしれない。そんなときは仕方ない、再設定だ。

mySQLパスワードを再設定する方法

1.rootでパスワードなしログインができるようにする
/etc/my.cnf に、次の一行を足す。

skip-grant-tables

そうするとパスワード無しでログインできるようになる。
2.rootでログインし、パスワードを設定する。

広告

[dacelo@space ~]$ mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.

やった、ログインできたぞ。

MariaDB [(none)]> UPDATE mysql.user SET password=PASSWORD('hogehogefugafuga') WHERE user='root';
MariaDB [(none)]> flush privileges;

新しいパスワードを平文で設定して、privilegeをflushする。これで新しいパスワードでログインできるようになる。
!注!
MySQLのバージョンアップに伴う仕様変更により、上記コマンドでは次のようなエラーが出て設定できない場合がある。その際は下記のように実行だ。

MySQL [(none)]> UPDATE mysql.user SET authentication_string=PASSWORD('hogehogefugafuga') WHERE user='root';
MariaDB [(none)]> flush privileges;

まとめ

今回、パスワード忘れで再設定したら、rootのcronから「ログローテートに失敗しました」と通知が来たので調べてみたので分かったこと。ファイルを見れば分かるんだったら、再設定する必要ないじゃん、と。
なので、MySQLのrootパスワードがわからなくなったら、まずは/root/.my.cnfに書いてないか確かめる。なかったら諦めて再設定をする。と、この順番ですね。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *