現象:使用 IP 或域名連接 MySQL,報錯:
#1042 - Can't get hostname for your address
MySQL 啟動時啟用了 **DNS 反向解析**(預設開啟),嘗試將客戶端 IP 解析為主機名以匹配權限表 mysql.user 的 Host 列。若 DNS 解析失敗(無 PTR 記錄、DNS 服務器不可達、/etc/hosts 缺失),連接被拒絕。
vi /etc/my.cnf # Windows 為 my.ini
# 在 [mysqld] 區段末尾添加
skip-name-resolve
重啟 MySQL 服務:
systemctl restart mysqld
# 或 service mysqld restart
% 或 localhost。UPDATE mysql.user SET Host='%' WHERE Host='some.hostname';
FLUSH PRIVILEGES;
mysql -u root -p -h 192.168.1.100 -e "SELECT 1;"
# 連接成功,無 1042 錯誤
一行配置,徹底解決連接超時與拒絕問題。