首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 啟用 skip-name-resolve 導致無法連線:授權表主機名清理與修復指南

     編輯:MySQL 綜合教學

MySQL 啟用 skip-name-resolve 導致無法連線:授權表主機名清理與修復指南

問題背景

在 my.ini 添加 skip-name-resolve 可禁用 DNS 解析、提升連線速度,但開啟後所有遠端授權必須使用 IP 地址,否則連線失敗。

排查步驟

  1. 檢查 mysql.user 表中是否存在主機名授權:
    SELECT user, host FROM mysql.user WHERE host <> 'localhost';
  2. 常見情況:存在 % (任意主機) 授權記錄,此為 IP 通配符,不受影響。
  3. 若存在具體主機名 (如 DB1、DB2) 授權,必須清理。

修復方案

情況 1:localhost 需改為 127.0.0.1

UPDATE mysql.user SET host='127.0.0.1' WHERE host='localhost' AND user='root';
FLUSH PRIVILEGES;

情況 2:存在具體主機名授權

DELETE FROM mysql.user WHERE host IN ('DB1', 'DB2', ...);
FLUSH PRIVILEGES;

驗證

修改完成後重啟 MySQL 服務,連線應恢復正常。

最佳實踐建議

  • 啟用 skip-name-resolve 前,先完整審查 mysql.user 表
  • 統一使用 IP 地址或 % 進行授權,避免主機名解析依賴
  • 內網環境建議開啟此選項,減少 DNS 故障風險
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved