mysql - 错误 1129 : Host '' blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

标签 mysql sql security database-administration

当我运行连接到 mysql 的 python 代码时,我看到了这个错误; “错误 1129:由于许多连接错误,主机 '' 被阻止;使用 'mysqladmin flush-hosts' 解除阻止”。

这是我尝试过的: 我增加了 max_connection_errors 值,还执行了“刷新主机”命令。我也检查了mysql日志,但没有。另外,我检查了网络连接,也没有问题。

$netstat -an | grep 3306 TCP 0 0 0.0.0.0:3306 0.0.0.0:* 听

这里是mysql设置:

mysql> 显示类似 '%error%' 的变量;

错误计数 | 0
日志错误 |/var/log/mysql/error.log 最大连接错误 | 4294967295
最大错误计数 | 64
slave_skip_errors |关闭

mysql> 显示类似 '%max_connections%' 的变量;

最大连接数 | 5000

mysql> 显示状态如 '%onn%';

中止连接 | 6
连接 | 4802
最大使用连接数 | 26
SSL_client_connects | 0
Ssl_connect_renegotiates | 0
Ssl_finished_connects | 0
线程连接 | 1

mysql>'SHOW STATUS WHERE variable_name LIKE "Threads_%"OR variable_name = "Connections

连接 | 4996
线程缓存 | 7
线程连接 | 1
线程创建 | 1950
线程_running | 1

mysql>显示进程列表;

4800 |根 |本地主机 |空 |查询 | 0 |空 |显示进程列表
4807 |根 |本地主机 |数据库1 | sleep | 0 | |空

谁能帮我找出问题所在以及解决方法是什么?

最佳答案

这不是您的 MySQL 服务器软件的故障。这是在您用来运行 Python 程序的同一台机器上运行的其他一些软件出现故障的证据。错误 1129 表示 MySQL 粗暴的反网络犯罪功能已被激活:在您使用的同一台机器上运行的程序已尝试多次连接但均失败(默认为 100 次)。当这种情况发生时,MySQL 断定机器已被破坏(或运行异常)并拒绝接受来自它的任何更多连接。

什么会导致这种情况?您的计算机上是否存在使用无效用户名或密码设置的 cronjob 或其他自动运行的程序?如果是这样,它可能会导致 MySQL 服务器出现连接故障。

如果它是基于 Linux 或 BSD 的机器,请使用 ps axuww shell 命令几次并查找您不认识的进程。 (如果您不确定如何操作,请在适用于您的操作系统的论坛上提问。)

您可能会考虑重新启动机器。

编辑 您的机器似乎受到攻击。您提到您在 authlog 中收到很多 failed password 消息。你能追踪到这些攻击的来源吗?如果它们是内部的——也就是说,来自您或您的同事控制的机器——它们可能是某种已配置的程序

  • 跑得太频繁,或者
  • 使用不正确的密码,
  • 或两者皆有。

在 IP 地址中查找模式。这些故障是来自一个还是少数几个地址?它们是来自 192.168.. 或 10...* 之类的私有(private)地址,还是来自本地主机 (127.0.0.1)?还是他们来自各地?如果您不认识这些地址,请尝试将它们放入这三个网站的表格中:

https://ripe.net
https://apnic.net
https://arin.net

这三项中至少有一项会告诉您故障来自哪个国家/地区和电信提供商。如果他们来自与您没有任何关系的地方,您就会受到攻击。

如果攻击是外部的,您需要采取措施在它们到达您的数据库机器之前阻止它们。大多数运行 MySQL 的机器都通过防火墙与更广泛的互联网隔离,因为 MySQL 不像其他一些软件那样强大,可以抵御网络犯罪和脚本小子攻击。

寻找计时模式。这些失败的时间是每五分钟一次,还是尽可能快,还是什么?如果它是正常的,则可能是您在某个地方安装了某种行为不当的程序。

如果这些对您来说都没有意义,请网络工程师帮助您。如果您的 MySQL 服务器包含敏感或有值(value)的信息,不要拖延面对这个问题。祝你好运。这种事情毁了我好几天。

关于mysql - 错误 1129 : Host '' blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272953/

相关文章:

MySQL计数返回0而不是没有记录

java - 在没有任何第三方客户端的分布式应用程序中使用什么 Oauth2 授权类型?

security - 某些移动用户的 SSL 安全错误

php - 与 Avg() 和连接 2 个表的混淆

php - 如何从具有相同日期的表中获取最后一个和最后一个(查询)?

php - varchar 字段丢失前导 0

ios - 锁定应用程序

jquery - SQL数据库设计外键

python - 将 Python dict 与 MySQL 表连接起来

MySQL 旋转和分配自定义列名称