环境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 ;