远程连接MySQL数据库1130错误解决方法以及相关知识学习

问题描述

在进行MySQL数据库的远程连接操作时,出现错误:“ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server”。

分析原因

问题显示为我们无法连接MySQL服务器,显示不被允许,说明没有访问权限。
主要是MySQL服务器端远程连接权限没有对外开放。

解决方法

通过修改MySQL数据库访问权限即可。
使用命令:

mysql -uroot -p

登入数据库。(会弹出输入数据库密码的提示。输入密码即可。)
如果用户是root,

GRANT ALL PRIVILEGES ON *.*  TO 'root'@'%' IDENTIFIED BY '数据库密码' WITH GRANT OPTION;

这个时候,就会出现不同的情况(逐个分析)。

情况1:

没有报错。(这是最好的)那直接刷新权限:

flush privileges;

情况2:

出现了新的错误:

ERROR 1819 (hy000): Your password does not satisfy the current policy requirements。

出现这种情况的原因,与MySQL数据库的validate_password_policy的值有关系。
validate_password_policy表示密码强度等级检查,有以下取值:
在这里插入图片描述
0或者LOW表示密码任意,只要求长度合格即可;
1或者MEDIUM表示密码在符合长度的基础上,还要含有数字,小写字母或者大写字母,特殊字符;
2或者STRONG表示在1的基础上还要求用于密码强度的字典文件路径。

而MySQL默认是1(MEDIUM),所以设置的密码长度必须符合长度在8位及8位以上,大小写字母,特殊字符,数字。(而我出现这个问题的原因在于,我修改后的密码是123456,无论是长度还是其他都不符合MEDIUM级别的要求,所以会报错)。

针对于我出现问题的原因,可以有两个解决办法

方法1:

既然是现在的密码不符合当前密码强度的级别要求,则可以修改密码,符合要求,从而解决错误。
比如:可以修改密码为:Test112233…
进入MySQL,输入:

set password for root@localhost=password('Test112233..');

然后重新授予root用户远程访问权限:

grant all privileges on *.* to 'root'@'%' identified by 'Test112233..';

刷新权限,使设置生效。

flush privileges;

这样,就可以解决1819错误。

方法2:

同样地,既然不符合当前密码强度的级别要求,而不像修改密码,那么可以降低密码强度的级别要求。从1(MEDIUM)降为0(LOW),只对密码的长度做要求。
在MySQL中输入:

set global validate_password_policy=0;

更改密码强度要求。
这个时候,再次进行Navicat远程连接MySQL数据库,发现还是有错误(我的密码是123456,长度为6)。
原来,MySQL中默认对密码的长度要求是8,如果低于8位的话,其实还是不符合密码强度要求的,所以还是有错。
我们可以通过以下命令查看密码长度要求:

select @@validate_password_length;

如果没有修改的话,会出现如图结果。
在这里插入图片描述
然后修改密码长度要求:

set global validate_password_length=4;

这样,就修改了密码长度要求,此时再进行授予权限操作。

grant all privileges on *.* to 'root'@'%' identified by '123456';

刷新权限,使设置生效。

flush privileges;

注意,
validate_password_length=1,还是2,3,4 ,‘使密码长度生效’这个参数的实际值都是4。超过4后设置是多少实际就是多少。

参考博客:
[1]: https://blog.csdn.net/wudinaniya/article/details/79378635
[2]: https://www.haorooms.com/post/mysql_1130

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐