環境說明:
内網測試伺服器192.168.18.251 為WEB伺服器,安裝了mysql; 内網音視訊轉碼伺服器192.168.18.253安裝了轉碼工具,其上/www/attachment挂載到WEB 的/webdev/attachment上實作對WEB上音視訊檔案的轉碼處理,某日發現轉碼不能成功,在轉碼伺服器上手動執行轉碼腳本檔案後報錯,詳細資訊如下:
錯誤大體是這樣:
ERROR 1129 (00000): Host 'XXXXXX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
查了下資料 --說明mysqld已經得到了大量(max_connect_errors)的主機'hostname'的在中途被中斷了的連接配接請求。在 max_connect_errors次失敗請求後,mysqld認定出錯了(象來自一個黑客的攻擊),并且阻止該站點進一步的連接配接,直到某人執行指令 mysqladmin flush-hosts。
預設地,mysqld在10個連接配接錯誤後阻塞一台主機。你可以通過象這樣啟動伺服器很容易地調整它: set global max_connect_errors=1000;
注意,對給定的主機,如果得到這條錯誤消息,你應該首先檢查該主機的TCP/IP連接配接有沒有問題。如果你的TCP/IP連接配接不在運作,增加max_connect_errors變量的值對你也不會有幫助!
××××××××××××××××××××××××××××××××××××××××××××××××××××××××
另一篇相關介紹:
Mysql報錯 mysqladmin flush-hosts
2011-11-26
Tomcat 報出如下錯誤:
java.sql.SQLException: null, message server: "Host ""*****"" is blocked because of many connection errors; unblock with ""mysqladmin flush-hosts"""
解決辦法:
mysqladmin flush-hosts
原因:
mysql中預設的max_connect_errors是10,因為連接配接失誤,造成這個數值高于10,當在接受連接配接的時侯就被鎖住了, 并阻止主機的進一步連接配接請求。
可以将這個值改的稍微高一些。
shell> mysqld_safe --max_connect_errors=10000
注意,對給定的主機,如果得到這條錯誤消息,你應該首先檢查該主機的TCP/IP連接配接有沒有問題。如果你的TCP/IP連接配接不在運作,增加max_connect_errors變量的值對你也不會有幫助!
=========================================
附:Max_connect errors說明
max_connect_errors是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的用戶端以防止暴力破解密碼的情況。max_connect_errors的值與性能并無太大關系。
預設情況下,my.cnf檔案中可能沒有此行,如果需要設定此數值,手動添加即可。
參數格式
| |
修改方法
如果系統是CentOS、Debian等,則配置檔案可能位于 /etc/my.cnf 。打開此檔案
| |
然後在[mysqld]配置節中加入上述語句即可。
配置說明
當此值設定為10時,意味着如果某一用戶端嘗試連接配接此MySQL伺服器,但是失敗(如密碼錯誤等等)10次,則MySQL會無條件強制阻止此用戶端連接配接。
如果希望重置此計數器的值,則必須重新開機MySQL伺服器或者執行
| 指令。 |
當這一用戶端成功連接配接一次MySQL伺服器後,針對此用戶端的max_connect_errors會清零。
影響與錯誤形式
如果max_connect_errors的設定過小,則網頁可能提示無法連接配接資料庫伺服器;而通過SSH的mysql指令連接配接資料庫,則會傳回
ERROR 1129 (00000): Host ‘gateway’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’錯誤。
功能與作用
一般來說建議資料庫伺服器不監聽來自網絡的連接配接,僅僅通過sock連接配接,這樣可以防止絕大多數針對mysql的攻擊;如果必須要開啟mysql的網絡連接配接,則最好設定此值,以防止窮舉密碼的攻擊手段。