連接MySQL報 unblock with 'mysqladmin flush-hosts' 問題解決


    工作中突然遇到有一台服務器連接不上MySQL數據庫,報錯如下,其他服務都正常。特此總結一下解決方法。

 

 

可以看出,產生的原因是:

同一個ip在短時間內產生太多(超過mysql數據庫max_connect_errors的最大值)中斷的數據庫連接而導致的阻塞

max_connect_errors是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的情況。
max_connect_errors的值與性能並無太大關系,默認是10。意味着如果某一客戶端嘗試連接此MySQL服務器,但是失敗(如密碼錯誤等等)10次 ,則MySQL會無條件強制阻止此客戶端連接。
如果希望重置此計數器的值,則必須重啟MySQL服務器或者執行mysql> flush hosts; 命令。當這一客戶端成功連接一次MySQL服務器后,針對此客戶端的max_connect_errors會清零。
如果max_connect_errors設置過小,則網頁可能提示無法連接數據庫服務器。

 

解決方法1:修改max_connect_errors的值
(1)進入Mysql數據庫查看max_connect_errors:
> show variables like '%max_connect_errors%';
(2)修改max_connect_errors的值:
> set global max_connect_errors = 100;
(3)查看是否修改成功
> show variables like '%max_connect_errors%';

解決方法2:使用mysqladmin flush-hosts 命令清理一下hosts文件
(1)在查找到的目錄下使用命令修改:mysqladmin -u xxx -p flush-hosts
或者
> flush hosts;


解決方法3:重啟mysqld
也可以在重啟之前,在配置文件中將該參數調大。
# vi /etc/my.cnf
max_connect_errors = 100


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM