更新时间:2012-12-17 08:37 EDT

更新时间:2012-12-17 08:37 EDT

我在运行 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 重启来改变。

相关内容