这个错误信息表示主机 'xxx.xxx.xxx.xxx' 因为多次连接错误而被阻止。要解决这个问题,你需要使用 'mysqladmin flush-hosts' 命令来解除对该主机的阻止。
原因1:说明mysqld已经得到了大量(max_connect_errors)的主机’hostname’的在中途被中断了的连接请求。在 max_connect_errors次失败请求后,mysqld认定出错了(像来自一个黑客的攻击),并且阻止该站点进一步的连接,直到某人执行命令 mysqladmin flush-hosts。
解决办法:
cd /usr/local/mysql/bin mysqladmin flush-hosts
原因2:因为公司需要把项目和数据库分开进行,所以有2台服务器,直接修改连接池ip后,出现了ava.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect这样的错误,它的意思就是安装了数据库的服务器不允许部署项目的服务器进行远程连接。也就是权限问题,修改权限就可以了,修改方法是。
登录mysql : mysql -u账号 -p密码;
use mysql; show tables; select host from user; update user set host ='%' where user ='root';【修改为可以远程访问】 flush privileges;
flush privileges; 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。
解决方法:
1. 打开命令行窗口(Windows)或终端(Linux / macOS)。
2. 输入以下命令并按回车键执行:
mysqladmin flush-hosts
这将解除对主机 'xxx.xxx.xxx.xxx' 的阻止。
除了使用`mysqladmin flush-hosts`命令,你还可以尝试以下方法来解决这个问题:
1. 修改MySQL服务器的配置文件(my.cnf或my.ini),增加`max_connect_errors`的值。这将允许更多的连接错误,直到达到最大值,然后服务器将开始阻止新的连接。在配置文件中添加或修改以下行:
[mysqld] max_connect_errors = 10000
保存文件并重启MySQL服务器。
2. 如果你有权限,可以登录到MySQL服务器,然后手动执行以下命令来解除对主机的阻止:
RENAME HOST 'xxx.xxx.xxx.xxx' TO '新主机名'; FLUSH PRIVILEGES;
这将重命名主机并刷新权限,从而解除对该主机的阻止。
如果你没有权限,可以尝试使用Navicat Premium来解决这个问题。请按照以下步骤操作:
1. 打开Navicat Premium,连接到你的MySQL数据库。
2. 在左侧的连接列表中,找到你的主机(IP地址或主机名),右键点击它,然后选择"属性"。
3. 在弹出的属性窗口中,找到"远程主机"选项卡。
4. 在"远程主机"选项卡中,找到"高级"部分,点击"编辑"按钮。
5. 在弹出的"编辑远程主机"窗口中,修改`max_connect_errors`的值,例如将其设置为一个较大的值,如10000。
6. 点击"确定"按钮保存更改,然后关闭属性窗口。
7. 点击工具栏上的绿色箭头按钮(或按F5键)重新连接数据库。
现在,你应该能够正常连接到MySQL服务器了。如果仍然遇到问题,请尝试重启MySQL服务器并重复上述步骤。
发表评论
2024-06-14 20:40:09回复