主机“ host_name”在MySQL中被阻止的原因是什么?


12

当我使用不正确的密码连接到mysql服务器,并且测试计数超过时max_connect_errors,我发现Aborted_connects也出现了我测试的计数,但是主机仍未被阻止。

那么Aborted_connectsover the max_connect_errorshost_name是否被阻止?

Answers:


8

此时,您可能需要运行FLUSH HOSTS并查看它是否解除阻止。

MySQL文档说了有关FLUSH HOSTS的内容:

  • 清空主机缓存表。如果某些主机更改了IP地址,或者收到错误消息“主机名”被阻止,则应该刷新主机表。当给定主机连接到MySQL服务器时,如果连续发生多个max_connect_errors错误,则MySQL认为出了点问题,并阻止了主机发出进一步的连接请求。刷新主机表可从主机进行进一步的连接尝试。请参见第C.5.2.6节“主机'host_name'被阻止”。您可以使用--max_connect_errors = 999999999启动mysqld以避免出现此错误消息。

为什么要阻止主机开始?

根据MySQL文档

如果收到以下错误,则表明mysqld从主机'host_name'接收到许多连接请求,但这些请求在中间被中断:由于许多连接错误,主机'host_name'被阻止。使用“ mysqladmin flush-hosts”取消阻止允许的中断连接请求的数量由max_connect_errors系统变量的值确定。在max_connect_errors请求失败后,mysqld认为出了点问题(例如,有人试图闯入),并阻止主机进一步连接,直到执行mysqladmin flush-hosts命令或发出FLUSH HOSTS语句为止。请参见第5.1.3节“服务器系统变量”。

默认情况下,mysqld会在10个连接错误后阻止主机。您可以像这样启动服务器来调整值:

shell> mysqld_safe --max_connect_errors=10000 &

如果收到给定主机的此错误消息,则应首先验证该主机的TCP / IP连接没有任何问题。如果您遇到网络问题,那么增加max_connect_errors变量的值对您没有好处。


这些错误看起来并没有进入正常的MySQL错误日志。有没有办法查看主机阻止连接错误的日志?我也注意到上面的“成功”。那么,仅需要它们之间的成功连接?或者,我应该问一个新问题吗?
Marc L.

1

造成这种阻塞的原因之一是主机上的一些随机人决定对MySQL进行一些监视,并在远程服务器上的MySQL端口上建立telnet。通过足够数量的telnet调用,主机将被阻止进一步访问该MySQL服务器。与某些服务器不同,MySQL不会在合理的时间后自动解除阻止访问:服务器管理员必须将MySQL置于首位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.