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

MySQL 大量「unauthenticated user」連線阻塞:DNS 反查導致與解決方案

     編輯:MySQL 資料庫相關知識

現象特徵

  • SHOW PROCESSLIST 大量 unauthenticated user、狀態 Connect、命令 Login
  • mysqladmin status 顯示 Threads 飆高、QPS 卻很低
  • 錯誤日誌僅見 Forcing close of thread ... user: 'root'

根本原因

MySQL 預設嘗試對客戶端 IP 執行反向 DNS 解析 (PTR 記錄),若 DNS 伺服器回應慢或失敗,連線建立階段長時間阻塞,佔用連線槽位導致新連線無法建立。

即時解決:啟動參數 --skip-name-resolve

# my.cnf / my.ini
[mysqld]
skip-name-resolve

重啟 MySQL 服務生效。此後:

  • 不再嘗試反查 DNS
  • GRANT 主機名只能用 IP 或 %,不能用主機名
  • SHOW PROCESSLIST Host 欄直接顯示 IP

替代方案:修正 DNS 基礎設施

  • 確保 /etc/hosts 或 DNS 伺服器能快速解析所有客戶端 IP
  • 啟用 nscd (Name Service Cache Daemon) 緩存解析結果

驗證指令

mysqladmin -uroot -p status -i 1  # 觀察 Threads 是否穩定
mysqladmin -uroot -p processlist  # 確認無 unauthenticated user
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved