MySQLのrootパスワードを忘れたら
しつこくMySQLユーザアカウントネタ。
標題の対処法はどこにでも書かれているが、いちいち調べるのは面倒だからここにも
書いておこう。。と思っていたら、今日さっそく利用した。
人生、どのタイミングで何が起きるか分かりません。
スタンダードな対処法
1.MySQLインスタンスを停止する。
2.認証スキップモードで起動する。セーフモード、ともいうらしい。
# /usr/bin/mysqld_safe – -skip-grant-tables &
※mysqld_safeのパスは標準では上記のようになると思うが、環境によっては違うかも。。
3.認証なしでログイン。
# mysql -u root
4.rootパスワードを更新
mysql > UPDATE mysql.user SET password=PASSWORD(‘new-passowrd‘)
-> WHERE User= ‘root’;
mysql > FLUSH PRIVILEGES;
mysql > ¥q
5.現在のMySQLを停止させて、通常モードで起動する。
6.先ほど設定したパスワードでログインできるか確認する。
この他に、rootパスワードをNULLにセットして一旦抜けてからmysqladminでパスワード
設定する、なんていうのもあったが、ちょっと冗長な気がする。。
いろんなやり方を知るのはいいけど、同じ結果になるなら方法は簡潔な方がいい。
しかしせっかくなのでmysqladminでのパスワードセット方法も書いておこう。
こういう時以外でも使えるわけだし。
# mysqladmin -u root password new-passowrd
# mysqladmin reload
パスワードを指定する際は、クォーテーションで囲む必要はないそうだ。
ちなみに自分の場合、rootパスワードを忘れたというより、初期状態は空になっている
ハズのrootパスワードが何故かセットされていたという現象に遭遇した。詳しいことは
書けないが、やはり人生何が起こるか分からないものなのだ。
それから話はそれるが、ググっていたらこちらに面白いことが書いてあったので、
記録させてもらおう。
MySQLのユーザアカウントはOSのユーザアカウントとは別のものだが、MySQLへの
ログイン時にユーザ名が指定されていないときは、現在のOS上のログインユーザ名を
MySQLのユーザー名に置き換えてログインを試みてくれる、ということらしい。
し、知らなかった。
MySQLのユーザアカウント管理、深いよ。。
追記
上記の「現在のOS上のログインユーザ」というのは、マシンに接続したときのユーザ、
つまりまさにログインユーザであって、suでスイッチしたユーザではない。
・・・ってことが、やってみて分かった。
さらに追記
下記のコマンドを思い切り間違えていたので修正しました。我ながらトホホだ、、、
- -skip-grant-options
↓ ↓ ↓
- -skip-grant-tables