數據庫連接報錯:
image.png
百度后,知道是數據庫連接太多,中間發生連接斷開。在系統變量:max_connect_errors設置了允許中斷的次數,超過了這個次數,mysql就會報如上錯誤,并拒絕新的連接(相當于拉黑了),直到執行mysqladmin flush-hosts命令或者FLUSH_HOSTS命令。
解決方法:
默認max_connect_errors 是10,但可動態調。不過調max_connect_errors 不是根本解決辦法。
首先得看tcp/ip連接沒問題,就是說網絡沒問題(還沒到mysql那呢,在上述連mysql流程的第一步)。查看網絡問題可用netstat(netstat咋用,又一篇博客)。
然后看應用層程序里寫的對不對,這個不容易發現,可能是代碼里面有哪里沒有寫好,連接到一半就關閉連接了。
首先我檢查了一下自己的網絡連接,確認聯網沒問題后,嘗試修改Mysql配置。
根據如上方法,需要對遠程連接的數據庫配置進行修改:
- 使用命令行遠程連接mysql
首先需要自己的電腦上安裝有mysql(有mysql驅動,能使用mysql命令),進入命令行后,使用:mysql -h ip -u root -p 3306
來遠程連接數據庫 - 在數據庫命令行中,通過
show variables like '%max_connection_errors%'
命令查看數據庫的最大連接設置,然后通過修改最大連接數來解決問題,命令:set global max_connect_errors = 1000
,修改完成后用show variables like '%max_connection_errors%'
命令檢查一下是否修改成功。
到了這一步就已經可以順利的連接到數據庫了。 - 如第二步,只是治標不治本的方法,下面這個方法比較好:
通過命令whereis mysqladmin
查找到mysqladmin在哪個目錄下,在查找到的目錄下使用命令修改:/usr/bin/mysqladmin flush-hosts -h192.168.1.1 -P3308 -uroot -prootpwd;
同理,如上命令也可以在數據庫中進行修改:flush hosts;
另外,配置有master/slave的主從數據庫,需要把主庫和從庫都修改一遍。