MYSQL不能连接了,错误ERROR 1129 (00000): Host ” is blocked because of many connection errors;

MYSQL连接报错,错误ERROR 1129 (00000): Host ” is blocked because of many connection errors;

有一次在工作中偶然遇到了这个问题,我的可以连接没问题,同事说数据库连不上,开始以为连接数太小了,后来发现连接数够大,于是上网查询到了解决方法:

错误的大意:有太多连到mysql服务器的连接,连到一半就断了,也就是说尝试连接mysql没有成功!
出错的原因:这个同事尝试登陆mysql次数太多了,并且都没有登陆成功~~

简单叙述连mysql的流程
1.根据mysql的连接协议,发起握手,这在网络层面。
2.mysql服务器在内存上创建客户端连接的数据结构。
3.连接认证,就是看看客户端的权限,如用户名,密码允许不
4.监听端口,等待命令

解决办法
执行mysqladmin flush-hosts命令或者 FLUSH HOSTS 命令

mysqladmin flush-host

/* FLUSH HOSTS*/

 说明:系统变量max_connect_errors设置了允许中断的次数,超过了这个次数,mysql就报上边的错,因为它觉得可能哪里有问题(难道是恶意攻击?),然后它就不让新的连接连了, 默认max_connect_errors 是10,但可动态调,不过调max_connect_errors 不是根本解决办法

 

ERROR 1129 :HOST ‘XXXXX‘ is blocked because of many connection errors及max_connect_errors参数说明

 

总结以下几点:mysql8.0.19

1. 该参数对本地登录及远程登录密码错误次数没有效果

2. 对网络超时、连接超时以及telnet ip 3306操作有影响

telnet ip 3306 #执行这个,然后ctrl+C断开,错误累计一次,因此可以用这个方式去测试最大错误次数。

 3.参数查看:

show variables like '%max_connect_errors%';

4.错误累计次数查看:

select * from performance_schema.host_cache # 表字段sum_connect_errors值 

5.当sum_connect_errors这个值大于max_connect_errors,则出现HOST is blocked错误

6.同一个ip地址短时间内登录失败次数超过max_connect_errors值才会出现HOST is blocked

7.用该ip成功登录一次,则清零

解决方法:

1.调大max_connect_errors参数,越大越好

set global max_connect_errors=1000000

2.执行命令

mysqladmin -uroot -p flush-hosts 

 

 这种方法不好,因为会清空host_cache表,导致其他服务器客户端都要重新DSN解析。

3.将设为0,本质上就是禁掉host cache内存区域的使用。

set gloabl host_cache_size=0

4.在my.cnf里面添加skip-name-resolve参数,禁止使用DNS解析。弊端:客户端不能用机器名连接,只能用IP地址。

5.在my.cnf里面添加skip-networking参数,关闭TCP/IP连接方式。因为只有远程连接这个参数才起作用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值