我在运行 Windows XP 的 CentOS 6.1 虚拟机上运行 MySQL5.6.3虚拟盒。
网卡配置为桥接模式,因此我的物理机和虚拟机共享同一张以太网卡。
在虚拟机上,一切正常:互联网访问、DNS查找。但是,与MySQL守护进程的连接需要一段时间,并且日志不断显示此警告:
[警告] 无法解析 IP 地址“192.168.1.201”:名称解析暂时失败
192.168.1.201
是我运行 MySQL 客户端的主机。
看起来虽然 DNS 查找工作正常,撤销DNS 查找最终超时。
以下是虚拟机配置:
# 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
我的网络配置有问题吗?
答案1
恕我直言,这听起来就像您需要 mysqld 停止使用 DNS。
请执行以下操作:将其添加到 /etc/my.cnf
[mysqld]
skip-host-cache
skip-name-resolve
然后重启mysql。从此mysql将不再通过DNS解析地址。
试一试 !!!
警告
请阅读 MySQL 文档中的这些选项:
此外,使用此功能有一个限制:您不能在任何授权表的主机列中使用 DNS 名称。
更新时间: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 重启来改变。