远程连接mysql8遇到的问题

今天准备用Sqlyog远程连接Linux上的mysql8过程有几个报错的地方,记录一下。

想把密码设简单点,但是出来如下报错:

Your password does not satisfy the current policy requirements

这时可以先设置个符合规则的密码,如 Linux@182

成功后就准备改密码验证规则,但是又来个问题如下:

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

  1. 选择 mysql 数据库执行use mysql;

  1. 查看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

远程连接mysql8遇到的问题_第1张图片

出现这个原因是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感谢白日梦想家的分享!

你可能感兴趣的:(报错整理,mysql,服务器,数据库)