mysql8远程连接报错1251异常详细(保姆级教程)

  • Post author:
  • Post category:mysql


环境centos7 + mysql8 本地navicat破解版

这种情况下考虑还是因为mysql的版本问题,在mysql5的时候mysql使用的是mysql_native_password加密协议,在mysql8之后就改为了caching_sha2_password。所以我们现在去连接mysql会报错加密协议不对,



第一步

要解决问题也不难,首先我们查看一下用户的加密协议

select host,user,plugin,authentication_string from mysql.user;

这里我们以

这里我们以zuoan这个用户为例(

博主这里已经测试更改过了,原本是caching_sha2_password

解释一下这里的字段 ,pluging代表密码加密方式,我们需要改为mysql_native_password,(

博主这里已经测试更改过了,原本是caching_sha2_password

),host代表这个用户可以在任何地址上登录,如果你的不是%,则这个用户不能远程登录,需要使用如下方法开启远程登录



方法一


改表法


顾名思义,该方法就是直接修改更改”mysql”数据库里的”user”表里的”host”项,从”localhost”改为”%”

update user set host='%' where user='zuoan';


方法二


授权法


通过GRANT命令可以授予主机远程访问权限

--赋予任何主机访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'zuoan'@'%' IDENTIFIED BY '佐岸用户密码' WITH GRANT OPTION;



第二步

我们要更改mysql加密方式,先查看一下mysql的加密策略,不然很难更改密码

SHOW VARIABLES LIKE 'validate_password%';

在这里插入图片描述

我们可以看到这两行就是我们要更改的,将mysql的加密策略密码复杂度由medium改为low,密码长度改低一点,当然这个可以随意,只是博主习惯了六位数的密码,

注意validate_password.policy和validate_password_policy,如果你们查出来是validate_password.policy=medium就要写validate_password.policy!!!

#更改密码策略为low
set global validate_password_policy=low
#更改密码长度为6
set global validate_password_length=6;

关于 mysql 密码策略相关参数;

1)validate_password_length 固定密码的总长度;

2)validate_password_dictionary_file 指定密码验证的文件路径;

3)validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;

4)validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;

5)validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;



第三步

更改mysql加密方式

ALTER USER 'zuoan'@'%' IDENTIFIED BY '佐岸用户密码' PASSWORD EXPIRE NEVER;



第四步

更新一下密码

ALTER USER 'zuoan'@'%' IDENTIFIED WITH mysql_native_password BY '123456' ;



第五步

刷新权限

 FLUSH PRIVILEGES ;



版权声明:本文为weixin_45886609原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。