MySQLで勘違いしていたこと
MySQLでユーザの情報を得る時は
[sql light=”true”]
mysql> select host, user, password from mysql.user;
+———————–+———–+——————+
| host | user | password |
+———————–+———–+——————+
| localhost | root | 40fbe5a528c1bf3f |
| localhost.localdomain | root | 40fbe5a528c1bf3f |
| 127.0.0.1 | root | 40fbe5a528c1bf3f |
| % | user4567 | 40fbe5a528c1bf3f |
| 192.168.1.1 | user1234 | 40fbe5a528c1bf3f |
+———————–+———–+——————+
6 rows in set (0.00 sec)
[/sql]
な感じで見ることができます。この『host』っていう列なんですが、MySQLが動いてるサーバーのホスト名だと思い込んでました。会社とかで複数人で使ってるとこんな勘違いはおきないだろうけど、自宅でサーバー立ててやってると勘違いするんじゃねーか?と思うのは私だけでしょうか?
正しくは、『MySQLに繋ぎにくるPCのホスト名』なんですね。サーバーが192.168.1.101で、クライアントが192.168.1.1だったら、このuserテーブルには上記の5行目のようになっていないと繋げない訳です。
MySQL Administrator使って繋ぎに行こうと思ってもなかなか繋がらず、調べたらそういうことだったので、MySQLにクライアントPCのホスト名(192.168.1.1)で登録したら繋ぐことができました。恥ずかしい勘違いです。ちなみに『%』はどのホストからの接続も許可という意味らしいです。