为什么MySQL连接因为许多连接错误而被阻止?

32

从以上可以看出,我在数据库连接上遇到了问题,它给了我这个错误:

由于多次连接错误而被阻止

我找了一些答案,但没能解决我的问题。

我不知道是否提供了你所需要的所有信息,如果你需要其他信息,请告诉我。我有来自不同计算机的数据库连接,并创建了一个用户来访问数据库,但是由于“%”在主机行中,我想把它更改为IP地址以解决安全问题,结果导致我现在卡住了。


1
我尝试重新配置MySQL连接,尝试创建新用户,但都没有成功。我不知道还能做什么。 - Nick
2个回答

47

为保护MySQL免受连接错误的影响,它会阻止出现错误的客户端。

因此,首先需要找出出现了什么样的错误...

您可以检查数据目录中的MySQL错误日志(通常是hostname.err)。

或者,您可以增加max_connect_errors的值(当前值是多少?)最大值取决于架构。在32位上为4294967295,在64位上为18446744073709547520。(手册

mysql> SET GLOBAL max_connect_errors = 100000000;

但是如果错误经常发生,这并不是真正的解决方案。

FLUSH HOSTS 现在可以帮助您消除被阻止的主机。

mysql> FLUSH HOSTS;

如果想要在外部运行MySQL控制台,则可以使用mysqladmin命令:

# mysqladmin flush-hosts

是的,刷新主机可能会帮助我,但我要在数据库程序控制台中运行这行代码(命令)吗?顺便说一下,我正在使用 Navicat。 - Nick
是的。我猜你不仅可以使用mysql控制台运行它,还可以使用任何mysql客户端(即使是GUI)。为什么不试试呢? - Jason Heo
@Nick max_connection_errors 的默认值只有10。我猜测在你刷新之后,它达到了10。(但我不确定...)建议增加 max_connection_errors。http://dev.mysql.com/doc/refman/5.5/en/blocked-host.html - Jason Heo
我无法连接mysql命令行。如何使用“flush hosts”? - Melih
@AhmetMelihBaşbuğ 请将 "username" 替换为您的 MySQL 用户名,并在提示输入密码时输入密码。命令为 mysqladmin -u username -p flush-hosts - BadHorsie
显示剩余2条评论

9

首先使用以下命令清除本地MySQL主机:

mysqladmin -u [username] -p flush-hosts
**** [MySQL password]

或者

mysqladmin flush-hosts -u [username] -p
**** [MySQL password]

连接MySQL服务器:

mysqladmin -h <ENDPOINT URL> -P <PORT> -u <USER> -p flush-hosts
mysqladmin -h [END POINT URL] -P 3306 -u [DB USER] -p flush-hosts 

另外一个建议是,您可以通过编辑my.ini文件(MySQL配置文件)永久解决阻塞多个连接错误问题。

将变量max_connections = 10000进行更改;

或者

使用命令行登录到MySQL -

mysql -u [username] -p
**** [MySQL password]

将以下命令放入MySQL窗口中

SET GLOBAL max_connect_errors=10000;
set global max_connections = 200;

使用命令检查真实性 -

show variables like "max_connections";
show variables like "max_connect_errors";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接