首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 連接報錯「Can't get hostname for your address」一鍵解決

     編輯:MySQL 資料庫相關知識

現象:使用 IP 或域名連接 MySQL,報錯:

#1042 - Can't get hostname for your address

根因

MySQL 啟動時啟用了 **DNS 反向解析**(預設開啟),嘗試將客戶端 IP 解析為主機名以匹配權限表 mysql.user 的 Host 列。若 DNS 解析失敗(無 PTR 記錄、DNS 服務器不可達、/etc/hosts 缺失),連接被拒絕。

解決方案:禁用 DNS 反向解析

vi /etc/my.cnf   # Windows 為 my.ini
# 在 [mysqld] 區段末尾添加
skip-name-resolve

重啟 MySQL 服務:

systemctl restart mysqld
# 或 service mysqld restart

副作用與應對

  • 權限表 Host 列不能使用主機名:需全部改為 IP 地址、% 或 localhost。
  • 執行:
UPDATE mysql.user SET Host='%' WHERE Host='some.hostname';
FLUSH PRIVILEGES;

適用場景

  1. 內網環境無 DNS 服務器
  2. 雲服務器安全組/防火牆阻擋 DNS 流量
  3. 大量連接導致 DNS 解析延遲影響效能
  4. Docker/容器環境網路隔離無法解析

驗證

mysql -u root -p -h 192.168.1.100 -e "SELECT 1;"
# 連接成功,無 1042 錯誤

一行配置,徹底解決連接超時與拒絕問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved