今天同事在测试的时候发现在测试服务器上无法连接数据库服务器,但是在本地可以连,看了防火墙什么的都没有问题。我于是说可以用telnet试一下
telnet 192.XXX.XX.20 3306
执行之后报错如下图
image.png
报错信息:“Host '192.XXX.XX.13' is blocked because of many connection errors; unblock with'mysqladmin flush - hosts'”
(一)错误原因
MySQL 服务器具备一种内置的安全机制,当某个主机在短时间内产生大量连接错误时,为防范潜在的暴力破解或恶意攻击行为,MySQL 会自动将该主机列入封锁列表。例如,如果客户端在尝试连接 MySQL 服务器时,频繁出现用户名密码错误、网络不稳定导致连接中断等情况,就可能触发这一机制。
(二)解决方法
1.使用mysqladmin flush - hosts命令解除封锁
在终端执行命令
Linux 或 macOS 系统:打开终端,运行mysqladmin -u root -p flush - hosts命令。这里-u root表示使用 root 用户,-p表示需要输入密码。执行该命令后,系统会提示输入 MySQL 的 root 密码,输入正确密码并回车,若密码无误,封锁列表将被清除,被封锁的主机192.XXX.XX.13会被解封。
Windows 系统:打开命令提示符(CMD)或者 PowerShell,同样运行mysqladmin -u root -p flush - hosts命令。若 MySQL 的可执行文件路径未添加到系统环境变量,需先进入MySQL 的bin目录,例如:cd C:\Program Files\MySQL\MySQL Server X.X\bin(X.X代表安装的 MySQL 版本号),然后再执行上述命令。
2.调整 MySQL 的max_connect_errors参数
编辑 MySQL 配置文件:通常,MySQL 的配置文件在Linux 和 macOS 系统中是/etc/mysql/my.cnf或者/etc/my.cnf,在 Windows 系统中是C:\ProgramData\MySQL\MySQL Server X.X\my.ini(X.X为版本号)。使用文本编辑器打开该文件,在Linux 或 macOS 中可使用sudo nano /etc/mysql/my.cnf命令。
添加或修改max_connect_errors参数:在[mysqld]部分添加或修改max_connect_errors参数,例如将其设置为一个较大的值,如max_connect_errors = 1000。该参数规定了一个主机在被封锁之前所能允许的最大连接错误次数,增大此值可减少主机被误封锁的概率。
保存并退出文件:在编辑器中,按Ctrl + X,然后按Y确认保存,最后按Enter退出编辑器。
3.重启 MySQL服务:
在 Linux 系统中,使用sudo systemctl restart mysql命令重启 MySQL 服务;
在 Windows 系统中,可通过服务管理器找到 MySQL 服务,右键点击选择 “重启”。







网友评论