首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

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

     編輯:MySQL 綜合教學

錯誤現象

#1042 - Can't get hostname for your address

無論使用 IP 直連還是域名連接,均可能觸發此錯誤。

根本原因

MySQL 默認啟用 **反向 DNS 解析**:客戶端連接時,服務端會嘗試將客戶端 IP 解析為主機名,用於權限表(mysql.user)的 Host 列匹配。若 DNS 服務器不可用、解析超時或無 PTR 記錄,連接將被拒絕。

解決方案

方法:禁用 DNS 反向解析(推薦)

  1. 編輯配置文件 my.cnf(Linux)或 my.ini(Windows)
  2. 在 [mysqld] 區段末尾添加:
    skip-name-resolve
  3. 重啟 MySQL 服務:
    systemctl restart mysqld 或 net stop mysql && net start mysql

效果說明

  • ✅ 連接不再依賴 DNS,極大降低延遲
  • ✅ 避免 DNS 故障導致數據庫不可用
  • ⚠️ 注意: 權限表 mysql.user 的 Host 列不再支持主機名,需改用 IP 或 % 通配符

替代方案(不推薦生產環境)

  • 修復 DNS 解析:確保 /etc/hosts、DNS 服務器正確配置 PTR 記錄
  • 授權時使用 IP:GRANT ... TO 'user'@'192.168.1.%'

驗證

mysql -h 127.0.0.1 -u root -p
# 應可正常連接,無 1042 錯誤

一行配置,徹底解決連接超時與拒絕問題,生產環境強烈建議開啟。

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