数据库连接报错:
百度后,知道是数据库连接太多,中间发生连接断开。在系统变量: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的主从数据库,需要把主库和从库都修改一遍。