ERROR 1129 (HY000): Host 'host_name' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
預設情況下,MySQL 在同一主機累積 10 次連線錯誤 後,會自動屏蔽該主機後續連線請求,直至執行 FLUSH HOSTS 或重啟服務。
max_connect_errors 系統變數控制容錯閾值,預設 10。mysqladmin flush-hosts -u root -p
# 或登入 MySQL 執行
FLUSH HOSTS;
清空主機快取計數器,立即恢復該主機連線權限,無需重啟服務。
修改啟動參數或執行期變數:
-- 啟動參數 (my.cnf)
[mysqld]
max_connect_errors = 10000
-- 執行期動態調整 (需 SUPER 權限)
SET GLOBAL max_connect_errors = 10000;
將閾值從 10 提升至 10000,減少誤判頻率,但無法解決根本網路/程式問題。
ping、telnet host 3306、traceroute 確認無丟包、防火牆攔截。skip-name-resolve 導致 DNS 解析慢超時。log_error 記錄詳細拒連原因,精準定位。max_connect_errors = 100000 避免誤傷,並配合監控告警(如連線錯誤率 > 1% 即通知)。「Host is blocked」是 MySQL 的自我保護機制,而非 Bug。FLUSH HOSTS 能急救,調大 max_connect_errors 能緩解,但唯有修復網路與應用層連線品質,才能徹底杜絕。建議建立「連線錯誤率」核心指標納入日常巡檢,將風險消滅於萌芽狀態。