DB

mysqlのrootのパスワードがどうしても思い出せないときのルートパスワードリセット方法

4系と5系では対応方法が違うらしい。

mysqlのrootのパスワードを忘れてしまった!
なんてことはよくありますね。そんなときには自分の記憶を頑張って探らずに潔くrootのパスワードをリセットする事をお勧めします。

やり方自体はmysqlのリファレンスマニュアルに記載されているのですが、どうも4系と5系では対応方法が違うようなので注意します。
(5系だとこの部分の日本語のマニュアルがないので、英語を読みたくないからといって4系のやり方を5系で適用しないように注意)

1. root権限でサーバーにログインする

$ su -

2. MySQLサーバーを停止する。

とりあえず

$ ps aux | grep "mysqld"

とかでmysqldサーバーが動いているか確認。動いているようであれば停止

$ sudo service mysqld stop
$ kill `cat /mysql-data-directory/host_name.pid`

3.以下のようなワンライン書いたテキストファイルを用意する

# mysql-init 見たいなファイル名で
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

4. mysqld_safeを使ってmysqldサーバーを立ち上げる

$ mysqld_safe --init-file=~/mysql-init &

5. 再度ログインする

$ mysql -uroot -p

これで再設定完了

ちなみに、他にも再起動時に–skip-grant-tables –user=rootオプションを付与することでパスワードなしでrootでログインできたりするらしい。その場合はSQLでアップデート出来る

mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
mysql> FLUSH PRIVILEGES;

MySQL::MySQL5.1 リファレンスマニュアル :: B.1.4.1 How to Reset the Root Password