mysqlではデフォルトでDNSの逆引き参照が「ON」になっています。
そのため、IPアドレスにDNSの逆引きレコードが設定されている場合、mysqlの接続元を絞る際には注意が必要です。
以下ではkamoユーザで192.168.0.11のサーバからmysqlへ接続する際のことを考えてみます。
まずはmysql.userテーブルを確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> select user,host from mysql.user; +--------+--------------+ | user | host | +--------+--------------+ | root | 127.0.0.1 | | <span style="color: #ff0000;">kamo </span> | <span style="color: #ff0000;">192.168.0.11</span> | | root | ::1 | | | localhost | | root | localhost | +--------+--------------+ 5 rows in set (0.01 sec) mysql> |
逆引きレコードが設定されていると、「192.168.0.11」のサーバから接続したとしても名前解決されてしまうため、設定されている名前での接続となってしまいます。
これ、mysqlはデフォルトでDNSの逆引き参照が「ON」になっていることに起因しています。
無効にすれば解決します。以下の設定を入れます。
1 2 |
[mysqld] skip-name-resolve |
カモトラはConoHaのVPSでこの事象に遭遇しました。
ConoHaのVPSサービスではグローバルIPアドレスにDNSの逆引きレコードが設定されています。
グローバルIPアドレスにDNSの逆引きレコードは設定されていますか?
初期状態で設定されていますが、コントロールパネルよりお客様にて変更いただくことも可能です。
参考URL:IPアドレス|ConoHa VPSサポート
接続がうまくいかないなーと思った時には、DNSの逆引き設定が影響を与えている可能性がありますので、頭の片隅に入れておきましょう!