當在 MySQL 配置中啟用 skip-name-resolve 選項後,錯誤日誌中會出現類似以下的警告信息:
120726 11:57:22 [Warning] 'user' entry 'root@localhost.localdomain' ignored in --skip-name-resolve mode.
120726 11:57:22 [Warning] 'user' entry '@localhost.localdomain' ignored in --skip-name-resolve mode.
skip-name-resolve 的作用是禁用 DNS 解析,避免因網路 DNS 服務異常導致 MySQL 連線失敗,生產環境通常建議開啟。然而,開啟此選項後,MySQL 權限表(mysql.user)中的 Host 欄位將不再接受主機名,只能使用 IP 地址或 localhost(實際解析為 127.0.0.1)。
上述警告的出現,是因為權限表中已存在 localhost.localdomain 這類主機名帳號,MySQL 在跳過 DNS 解析時無法識別這些主機名,故予以忽略並記錄警告。
mysql -u root -pUSE mysql;DELETE FROM user WHERE Host = 'localhost.localdomain';
FLUSH PRIVILEGES;Host 欄位統一使用 IP 地址(如 127.0.0.1、192.168.1.%)或 localhost,避免使用完整主機名(FQDN)。skip-name-resolve,定期檢查 mysql.user 表,清理無效的主機名記錄。my.cnf 的 [mysqld] 區段加入 skip-name-resolve,並搭配 skip-host-cache 進一步提升連線效能。