1. 程式人生 > 其它 >ERROR 1129 (HY000): Host 'x.x.x.x' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

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

ERROR 1129 (HY000): Host 'x.x.x.x' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' mysql修改最大錯誤連線數。

一、錯誤解釋


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

該IP有過多的錯誤連線,被mysql被阻止繼續連線了。

二、錯誤原因 (Only)

本質原因是因為同一個IP在短時間內產生太多中斷的資料庫錯誤連線(超過max_connect_errors的最大值)而導致的。

三、產生原因

1、服務配置錯誤:

連線MySQL失敗之後不斷的重連,致使錯誤連線數飆升,超過最大值,使得同伺服器的其他服務不能再繼續連線MySQL。

2、網路超時:

MySQL客戶端與資料庫建立連線需要發起三次握手協議,正常情況下,這個時間非常短,但是一旦網路異常,網路超時等因素出現,就會導致這個握手協議無法完成,MySQL有個引數connect_timeout,它是MySQL服務端程序mysqld等待連線建立完成的時間,單位為秒。如果超過connect_timeout時間範圍內,仍然無法完成協議握手話,MySQL客戶端會收到異常致使錯誤連線增加。

3、其他原因:

指令碼或者Shell命令在不斷的使用錯誤的MySQL使用者名稱和密碼連線MySQL。

四、解決辦法

1、修改 max_connect_errors 的值

mysql> use performance_schema;
mysql
> show variables like 'max_connect_errors'; mysql> set global max_connect_errors = 10000;

2、檢查網路超時

ping 一下服務所在環境和mysql資料庫之間的網路,如果延時大於10s基本沒救,建議重啟伺服器(如果服務是部署在docker裡面的還建議重啟docker)。

3、根本解決辦法

找到致使錯誤連線數上升的原因:

A、不斷檢視錯誤連線數量

mysql> use performance_schema;
mysql> select * from host_cache\G

B、錯誤連線測試

mysql -h 192.168.232.254 -u錯誤的使用者名稱 -p錯誤的密碼