MySQLのパスワードを忘れてしまった・・・ 〜MySQL 5.0のパスワードのリセット方法〜

忘れてしまったので、ルートパスワードのリセットを試みました。

経緯

Djangoで練習しようと、MySQLのデータベースの設定するかと思ったら、rootのパスワードを忘れてしまったので、何とかならないか調べた。

チャレンジする

ひたすらする。あれ、うまくいかない。エラーでまくりwww

解決しない

mysqld_safeに--skip-grant-tablesオプションをつけて起動させればよいらしいです。起動はしましたが、クライアントが動かない。
mysqld.sockがあるべき場所に作られてないらしい。通常起動させると普通に作成されて、クライアントも動くのです。

諦めた

で、rootはどうやっても消せないし、データベースごと消すにもroot権限がないと無理だし。
4時間ほど頑張りましたが、諦めてOSごと入れ直すことになりそうです・・・トホホ。
パスワードさえ忘れなければ・・・

バージョン違い?

で、リセット方法変わったかも。
もしかしたらいけるかも

なんか日本語マニュアルは記述が古いみたいですね…。 http://dev.mysql.com/doc/mysql/en/resetting-permissions.html これを見た方が良いかも。


(Thanks! http://www.mysql.gr.jp/mysqlml/mysql/ and MySQLML)

MySQL :: MySQL 5.0 Reference Manual :: B.1.4.1 How to Reset the Root Password

リセットできた!

一番下に載っていたmysqlクライアントを使ったやり方でいけました。

    • skip-grant-tablesオプションは、my.cnfで以下を追記して起動させています。

たぶん一番簡単な方法は、/etc/my.cnf に [mysqld] skip-grant-tables と書いて、普通に起動することだと思います。 必要な対処が終わったら元に戻しておきましょう。

(Thanks! http://www.mysql.gr.jp/mysqlml/mysql/ and MySQLML)

$ sudo /etc/init.d/mysql stop

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

mysqlクライアントでコマンドが成功すると、OK〜と成功したと報告してくるはずです。
最後に、my.cnfのskip-grant-tablesオプションを消すことをお忘れなく。

$ sudo /etc/init.d/mysql start

助かった!

よかったよかった。MySQLMLの皆さんに感謝感謝 MySQLML++
今夜はよく眠れそうだ Zzzz