MySQLのユーザについて
- http://dev.mysql.com/doc/refman/4.1/ja/connection-access.html
- http://dev.mysql.com/doc/refman/4.1/ja/request-access.html
- 丁寧。包括的。わからなくなったら最初に読むべきドキュメント。
mysql.userというテーブルにユーザ・パスワード・権限などが入っている。
mysql> select host, user, password from mysql.user; +-----------+---------+-------------------------------------------+ | host | user | password | +-----------+---------+-------------------------------------------+ | localhost | root | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | : +-----------+---------+-------------------------------------------+
パスワードハッシュはPASSWORD()で計算できる。
mysql> SELECT PASSWORD('hogehoge'); +-------------------------------------------+ | PASSWORD('hogehoge') | +-------------------------------------------+ | *0B025000DCF68B1D374153A7005639E320D41D5B | +-------------------------------------------+ 1 row in set (0.00 sec)
パスワードを変える時はこう。
mysql> SET PASSWORD FOR username = PASSWORD('hogehoge');
username@hostの@以降を省略すると@'%'と同じになる。
シンプルな形式 user は user@"%" のシノニムです。
GRANTで'_'はワイルドカード。`appname\_production`.* のようにエスケープする必要がある。
注意: GRANT コマンドでデータベース名を指定する際、‘_’ および ‘%’ ワイルドカードを使用できます。データベース名の一部として、たとえば ‘_’ 文字を使用したい場合、GRANT コマンドでは GRANT ... ON `foo\_bar`.* TO ... などのように、'\_' として指定するようしてください。そうしないと、ワイルドカードパターンに一致する別のデータベースにもユーザがアクセスできるようになります。
INSERT,UPDATEなど手動で権限を変更した場合は、FLUSH PRIVILEGESを実行する。
mysql> FLUSH PRIVILEGES;