web-dev-qa-db-ja.com

MySQL [警告] IPアドレスを解決できませんでした

Windowsで実行されているCentOS 6.1仮想マシンでMySQL5.6.3を実行していますXP in VirtualBox

ネットワークカードはブリッジモードで構成されているため、物理マシンと仮想マシンは同じイーサネットカードを共有しています。

仮想マシンでは、インターネットアクセス、DNSルックアップなど、すべてが正常に機能します。ただし、MySQLデーモンへの接続にはしばらく時間がかかり、ログには次の警告が表示され続けます。

[警告] IPアドレス '192.168.1.201'を解決できませんでした:名前解決で一時的に失敗しました

192.168.1.201は、MySQLクライアントを実行しているホストマシンです。

DNSルックアップは正常に機能しているように見えますが、reverseDNSルックアップはタイムアウトになります。

仮想マシンの構成は次のとおりです。

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="08:00:27:4B:3D:7C"
NM_CONTROLLED="yes"
ONBOOT="yes"
NETMASK=255.255.255.0
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
PEERDNS=yes

# cat /etc/resolv.conf
nameserver 192.168.1.1

ネットワーク構成に問題がありますか?

28
Benjamin

IMHOこれは、DNSの使用を停止するためにmysqldが必要なようです。

以下を実行してください:これを/etc/my.cnfに追加します

[mysqld]
skip-Host-cache
skip-name-resolve

それらはmysqlを再起動します。それ以降、mysqlはDNS経由でアドレスを解決しなくなります。

試してみる !!!

警告

MySQLドキュメントで次のオプションをお読みください。

また、これの使用には1つの制限があります。どの許可テーブルの「ホスト」列でもDNS名を使用することはできません。

UPDATE 2012-12-17 08:37 EDT

最近skip-Host-cacheおよびskip-name-resolveは、mysqlの再起動なしで設定できます。確認してみましょう:

mysql> show variables like '%Host%';
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | ************ |
| report_Host   |              |
+---------------+--------------+
2 rows in set (0.00 sec)

mysql> show variables like 'skip_%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| skip_external_locking | ON    |
| skip_name_resolve     | OFF   |
| skip_networking       | OFF   |
| skip_show_database    | OFF   |
+-----------------------+-------+
4 rows in set (0.00 sec)

mysql> set global skip_name_resolve = 1;
ERROR 1238 (HY000): Variable 'skip_name_resolve' is a read only variable
mysql>

このように、skip-Host-cacheはグローバル変数のリストに表示されません。はどうかと言うと skip_name_resolve、それは見えました。ただし、読み取り専用の変数であるため、動的に変更することはできません。

したがって、skip-Host-cacheおよびskip-name-resolveは、mysqlの再起動によってのみ変更できます。

51
RolandoMySQLDBA