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

MySQL異常排查:大量unauthenticated user佔用連接的DNS反查根因與解決

     編輯:MySQL 資料庫相關知識

現象

SHOW PROCESSLIST;
+----+--------------------+-----------------+------+---------+------+-------+------+
| Id | User               | Host            | db   | Command | Time | State | Info |
+----+--------------------+-----------------+------+---------+------+-------+------+
|... | unauthenticated user | 192.168.0.4:49607 | NULL | Connect | ...  | login | NULL |
|... | unauthenticated user | 192.168.0.4:49608 | NULL | Connect | ...  | login | NULL |
...

大量unauthenticated user卡在login狀態,佔滿max_connections導致正常業務拒連。

根因

MySQL**預設對每個新連接做DNS反向解析**(解析客戶端IP→主機名),用於權限表Host列匹配。**DNS服務器故障/超時**導致解析卡死,連接堆積在認證階段。

方案一:禁用DNS反查(推薦,兼具性能)

配置文件[mysqld]段添加:

skip-name-resolve

或啟動參數--skip-name-resolve。**副作用**:權限表Host列**不能用主機名**,只能用IP/通配符%。若業務已用%授權,**零影響**。

方案二:本地Hosts文件硬解析

/etc/hosts添加常連客戶端IP→主機名映射,繞過DNS服務器。適用於**少量固定客戶端**場景。

驗證

重啟後SHOW PROCESSLIST不再出現unauthenticated user堆積,新連接秒級認證通過。

延伸

skip-name-resolve也是**公認MySQL性能優化首選項**之一,省去網絡RTT與解析失敗風險。

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