Networking

MySQL在一個rn我ng在一種rn一世nGWarning無法解析 IP 地址

  • December 17, 2012

我在VirtualBox的 Windows XP 上執行的 CentOS 6.1 虛擬機上執行 MySQL5.6.3 。

網卡配置為橋接模式,所以我的物理機和虛擬機共享同一個乙太網卡。

在虛擬機上,一切正常:網際網路訪問、DNS 查找。但是,連接到 MySQL 守護程序需要一段時間,並且日誌不斷顯示以下警告:

$$ Warning $$無法解析 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

我的網路配置有問題嗎?

恕我直言,這聽起來您需要 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重啟來改變。

引用自:https://serverfault.com/questions/341290