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