2013年9月30日月曜日

mysql host='%'が有効にならない

http://dev.mysql.com/doc/refman/5.1/ja/access-denied.html

Access denied エラーの原因がわからない場合、user テーブルのエントリから、‘%’ または ‘_’ などのワイルドカード文字が付いている Host 値をすべて削除します。
ここで、Host = '%' および User = 'some_user' という新しいエントリを挿入して、これで同じマシンから接続するために localhost を指定することができるようになると考えることは誤りです。
これは機能しません。その理由は、デフォルト権限で、Host = 'localhost' および User = '' というエントリを含むためです。
このエントリには、Host カラムに 'localhost' という '%' よりも明確な値があるため、localhost から接続するときに新しいエントリよりもデフォルトのエントリが優先になります。
そのため、正確な手順としては、Host = 'localhost' および User = 'some_user' と改めて指定するか、または Host = 'localhost' および User = '' のエントリを削除します。このエントリを削除したら、 FLUSH PRIVILEGES ステートメントを発行して、権限テーブルのリロードを必ず行なってください。