Linux 伺服器安裝 MySQL 5 後,本地客戶端連線極慢,應用程式連線同樣緩慢。
預設安裝啟用 DNS 反向解析:新連線執行緒會對客戶端 IP 執行 gethostbyaddr_r()/gethostbyname_r() 解析主機名,用於權限表匹配。DNS 回應慢即導致連線阻塞。
編輯 my.cnf,在 [mysqld] 區段新增:
[mysqld] skip-name-resolve
重啟 MySQL 生效。
mysql.user 的 Host 欄不再支援主機名,僅能使用 IP 地址或 %127.0.0.1 替代 localhostWhen a new thread connects to mysqld... thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname... You can disable DNS host lookup by starting mysqld with --skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.
HOST_CACHE_SIZE(預設 128,需重新編譯)--skip-host-cache 禁用主機名快取,定期 FLUSH HOSTS/etc/hosts 新增映射:192.168.1.21 N-21,避免 DNS 查詢time mysql -h 127.0.0.1 -u root -p -e "SELECT 1;" # 應從「數秒~數十秒」降至「幾毫秒」
一行配置解決 MySQL 連線緩慢,建議納入標準化部署清單。