MySQL [警告] IP 地址无法解析

Ben*_*rel 29 mysql networking domain-name-system resolv.conf centos

我在VirtualBox 的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
Run Code Online (Sandbox Code Playgroud)

我的网络配置有问题吗?

Rol*_*DBA 55

恕我直言,这听起来像您需要 mysqld 才能停止使用 DNS。

请执行以下操作:将此添加到 /etc/my.cnf

[mysqld]
skip-host-cache
skip-name-resolve
Run Code Online (Sandbox Code Playgroud)

他们重新启动mysql。从此,mysql 将不再通过 DNS 解析地址。

试一试 !!!

警告

请阅读 MySQL 文档中的这些选项:

此外,使用它有一个限制:您不能在任何授权表的主机列中使用 DNS 名称。

更新 2012-12-17 08:37 EDT

如果我最近被请求skip-host-cacheskip-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>
Run Code Online (Sandbox Code Playgroud)

如图所示,skip-host-cache在全局变量列表中是不可见的。至于skip_name_resolve,它是可见的。但是,它不能动态更改,因为它是只读变量。

因此,skip-host-cacheskip-name-resolve只能通过一个mysql重启改变。