mysql(5.0.45)のパスワード設定

今まで、なんでパスワード設定して入れたり入れなかったりしたのかが今更わかった。原因はしっかりマニュアル読まなかった事によって、暗号化されたりされなかったりしてるのに気付かなかった事。

とりあえず、

# mysql -u root
mysql> update mysql.user set Password=password('testpass') where User='root';
mysql> flush privileges;
mysql> select Host,User,Password from mysql.user;

でいける(最後のは確認用)。

暗号化されない

  • SET PASSWORD
  • INSERT
  • UPDATE

これらのステートメントを利用してパスワードを設定する場合は暗号化がされないので、パスワードをPASSWORD()関数で囲む。

password='testpass'password=PASSWORD('testpass')

って感じ。パスワードを空白にするときはPASSWORD()で囲まなくてOK。

暗号化される

  • GRANT ... IDENTIFIED BY
  • mysqladminコマンド

これらは自動で暗号化される。

困った時用

パスワード忘れた時はmysqldを一度止めて、オプション付きで起動

mysqld_safe --skip-grant-tables &

これで、mysql -u root だけで入れるようになる。この中で設定。

パスワードの確認方法はmysql-serverにログインしてから

select Host,User,Password from mysql.user;