今天准备用Sqlyog远程连接Linux上的mysql8过程有几个报错的地方,记录一下。
想把密码设简单点,但是出来如下报错:
Your password does not satisfy the current policy requirements
这时可以先设置个符合规则的密码,如 Linux@182
![](https://img-blog.csdnimg.cn/img_convert/c8c9f34501f7ceec5b968711583b14bc.png)
成功后就准备改密码验证规则,但是又来个问题如下:
Unknown system variable 'validate_password_policy
通过查看 MySQL5.7 和 MySQL8.0 密码验证插件对比,可知两个版本中,变量名不一样。(*_password_policy 和 *_password.policy ) --- 问题原因所在。
MySQL 8.0调整密码验证规则:
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;
都设好后,准备连接sqlyog看看,结果又出来如下问题:
Host is not allowed to connect to this MySQL server
其实就是说我们的MySQL不允许远程登录,所以远程登录失败了,解决方法如下:
先在Linux登录MySQL mysql -u root -p
选择 mysql 数据库执行use mysql;
查看mysql 数据库中存储的用户信息的 user 表当前 root 用户的相关信息。执行的sql命令为:select host,user,authentication_string,plugin from user; 执行完命令后会显示一个表格, 就可以看到root 用户的 host默认显示的 localhost,说明只支持本地访问,不允许远程访问。
3.更改 host 的默认配置,执行命令为:update user set host='%' where user='root';
4.一定要刷新!执行 flush privileges;
经过上面4步,就可以解决这个问题了。
就在我信心满满再用sqlyog连接出来了另一个问题:
plugin caching_sha2_password could not be loaded
![](https://img-blog.csdnimg.cn/img_convert/f1cca177fa3648d281bb114da199b549.png)
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级SQLyog驱动,SQLyog-13.1.6-0.x64是默认支持mysql8.0以上身份验证,把低版本的SQLyog升级到13.1.6就可以解决。第二种是把mysql用户登录密码加密规则还原成mysql_native_password。
这里我用是第二种方式 :
ALTER USER 'root'@'%' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
至此就连接成功了,所以是问题就终归会解决,不要怕,如果不去解决问题它始终会在那。。。
参考的原文链接:https://blog.csdn.net/huangyuehong914/article/details/80503195感谢白日梦想家的分享!