当我运行连接到mysql的python代码时,我看到了这个错误; “错误1129:主机''由于许多连接错误而被阻止;使用'mysqladmin flush-hosts'解锁”。
以下是我的尝试: 我增加了max_connection_errors值,并且还执行了'flush hosts'命令。我也检查了mysql日志,但没有。另外,我检查了网络连接,也没关系。
$ netstat -an | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
这是mysql设置:
的MySQL> SHOW VARIABLES LIKE'%error%';
error_count | 0
log_error | /var/log/mysql/error.log
max_connect_errors | 4294967295个
max_error_count | 64个
slave_skip_errors |关闭
的MySQL>显示变量类似'%max_connections%';
max_connections | 5000
的MySQL>显示状态,如'%onn%';
Aborted_connects | 6
连接| 4802
Max_used_connections | 26个
Ssl_client_connects | 0
Ssl_connect_renegotiates | 0
Ssl_finished_connects | 0
Threads_connected | 1
mysql>'SHOW STATUS WHERE variable_name LIKE“Threads_%”OR variable_name =“Connections
连接| 4996
Threads_cached | 7
Threads_connected | 1
Threads_created | 1950年
Threads_running | 1
的MySQL> show processlist;
4800 |根| localhost | NULL |查询| 0 | NULL | show processlist
4807 |根| localhost | db1 |睡觉| 0 | | NULL
任何人都可以帮我找出问题所在,以及解决问题的方法是什么?
答案 0 :(得分:4)
这不是MySQL服务器软件的错误。这是在运行python程序的同一台机器上运行的其他软件出现故障的证据。错误1129意味着MySQL的原始反网络犯罪功能已被激活:在您正在使用的同一台计算机上运行的程序已尝试多次连接失败(默认情况下为100)。当发生这种情况时,MySQL得出结论,机器遭到入侵(或无法正常运行),并拒绝接受来自它的更多连接。
是什么导致这个?您的计算机上是否有cronjob或其他自动运行的程序,其中包含无效的用户名或密码?如果是这样的话,它可能会在MySQL服务器上消除连接失败。
如果它是基于Linux或BSD的计算机,请使用ps axuww
shell命令几次,并查找您无法识别的进程。 (如果您不确定如何在论坛上询问您的操作系统。)
您可以考虑重新启动机器。
编辑您的计算机似乎受到了攻击。您提到您在authlog中收到了大量failed password
条消息。你能找到这些攻击的来源吗?如果它们是内部的 - 也就是说,来自您或您的同事控制的机器 - 它们可能是某种已配置的程序
在ip地址中查找模式。这些故障来自一个或几个地址吗?它们来自私有地址,如192.168。。或10. 。。*,甚至来自localhost(127.0.0.1)?或者它们来自各地?如果您无法识别地址,请尝试将它们放入这三个网站的表单中:
https://ripe.net
https://apnic.net
https://arin.net
这三个中至少有一个会告诉您失败的国家和电信提供商。如果他们来自你没有关系的地方,你就会受到攻击。
如果攻击是外部攻击,则需要先采取措施阻止它们到达数据库计算机。大多数运行MySQL的计算机都被防火墙从更广泛的互联网隔离,因为MySQL不像其他一些针对网络犯罪和脚本小子攻击的软件那样强大。
寻找时间模式。这些故障的时间是每五分钟一次,还是尽可能快,或者是什么?如果它是常规的,那么你可能在某个地方有某种行为不端的程序。
如果这对您没有任何意义,请网络工程师帮助您。如果您的MySQL服务器包含敏感或有价值的信息,不要拖延面对此问题。祝好运。这种事情已经毁了我好几天了。
答案 1 :(得分:0)
客户端必须在同一时间范围内击中许多连接请求。
重置解决方案通过运行命令 mysqladmin flush-hosts