mysql -h mysql.test.com -u beginner -p
ERROR 2013: Lost connection to MySQL server during query
甚至 mysql -h mysql.test.com 即報錯,尚未進入驗證階段。
skip_name_resolve=OFF(預設)ip_to_hostname() → gethostbyaddr() → _nss_dns_gethostbyaddr_r()mysqld 進程 Segfaultyum update glibc / apt-get install libc6 至修復版本(≥ 2.3.4)[mysqld]
skip_name_resolve = ON
效果:GRANT / SHOW PROCESSLIST Host 欄顯示 IP 而非主機名,需將權限表 Host 改為 IP 或 %。
# /etc/nsswitch.conf
hosts: files dns # 移除 myhostname 或調整順序
# 1. 確認 mysqld 進程存活
ps aux | grep mysqld
# 2. 測試反解
getent hosts
# 3. 觀察錯誤日誌
tail -f /var/log/mysql/error.log
# 關鍵字:Segmentation fault, gethostbyaddr
skip_name_resolve=ON(部分發布版)host_cache_size 控制快取行為