萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

解決 MySQL "Host is blocked because of many connection errors" 連線封鎖問題

錯誤訊息

ERROR 1129 (00000): Host 'XXXXXX' is blocked because of many connection errors;
unblock with 'mysqladmin flush-hosts'

根因分析

MySQL 內部計數器記錄每個主機的連線錯誤次數。預設 max_connect_errors = 10,達標後該主機被加入封鎖清單,後續連線直接拒絕,直到執行 FLUSH HOSTS 或重啟服務。

即時解封

mysqladmin -h 192.168.50.1 -u root -p flush-hosts
# 或在 MySQL 內執行
FLUSH HOSTS;

根治調整

-- 臨時生效 (重啟失效)
SET GLOBAL max_connect_errors = 10000;

-- 永久生效 (寫入 my.cnf / my.ini)
[mysqld]
max_connect_errors = 10000

必做排查 (調大參數非根治)

  1. 網路層:檢查防火牆、TCP keepalive、交換機/路由器連線限制。
  2. 應用層:連線池配置錯誤 (未正確關閉)、驅動版本不相容、頻繁建立短連線。
  3. 資料庫層:max_connections 過小導致拒絕、wait_timeout 過短導致斷線重連風暴。
  4. 認證失敗:密碼錯誤、權限不足、skip-name-resolve 未開啟導致 DNS 解析超時。

最佳實踐

  • 監控 Aborted_connects 狀態變數,異常飆升即告警。
  • 應用端啟用連線池 (HikariCP、Druid 等) 並配置驗證查詢。
  • 生產環境建議 max_connect_errors = 100000 配合 skip-name-resolve。
copyright © 萬盛學電腦網 all rights reserved