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
ネットワーク構成に問題がありますか?
IMHOこれは、DNSの使用を停止するためにmysqldが必要なようです。
以下を実行してください:これを/etc/my.cnfに追加します
[mysqld]
skip-Host-cache
skip-name-resolve
それらはmysqlを再起動します。それ以降、mysqlはDNS経由でアドレスを解決しなくなります。
試してみる !!!
警告
MySQLドキュメントで次のオプションをお読みください。
また、これの使用には1つの制限があります。どの許可テーブルの「ホスト」列でもDNS名を使用することはできません。
最近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の再起動によってのみ変更できます。