現象:內網連接另一台 MySQL 伺服器極慢(輸入密碼前等待數十秒),但 ping 該主機極快。根因:**MySQL 預設啟用 DNS 反向解析**,連線時嘗試將客戶端 IP 解析為主機名,DNS 響應慢即導致連線阻塞。
/etc/resolv.confresolv.conf 後瞬間恢復正常在 MySQL 配置檔 [mysqld] 區段加入:
[mysqld]
skip-name-resolve
重啟 MySQL 服務即時生效。
gethostbyaddr_r()/gethostbyname_r() 解析--skip-name-resolve 直接跳過,**權限表僅能用 IP**HOST_CACHE_SIZE 重編譯、或 --skip-host-cache 禁用快取、FLUSH HOSTS 清理| 副作用 | 解決方式 |
|---|---|
無法用 localhost 連線 | 改用 127.0.0.1 或實際 IP |
| 權限表主機名失效 | GRANT ... TO 'user'@'IP' 或 'user'@'%' |
skip-name-resolve 後「速度像飛一樣」my.ini 加參數重啟即解決最佳實踐: 內網資料庫**優先嘗試修正 DNS**,若 DNS 基礎設施不可控或追求極致效能,**直接開啟 skip-name-resolve 並改用 IP 授權**,一勞永逸。