首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 啟用 skip-name-resolve 模式出現 Warning 警告的解決方案

     編輯:MySQL 資料庫相關知識

問題現象

當在 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 解析時無法識別這些主機名,故予以忽略並記錄警告。

解決步驟

  1. 登入 MySQL:mysql -u root -p
  2. 切換到 mysql 資料庫:USE mysql;
  3. 刪除包含問題主機名的帳號記錄:
    DELETE FROM user WHERE Host = 'localhost.localdomain';
  4. 重新載入權限表:FLUSH PRIVILEGES;
  5. 重啟 MySQL 服務,警告即可消失。

最佳實踐建議

  • 建立帳號時,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 進一步提升連線效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved