1、出现此问题的原因
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 现在说第二种方式。
2、进入mysql服务执行以下步骤
-
#修改加密规则 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更新一下用户的密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #刷新权限 FLUSH PRIVILEGES;
3、补充
如果你用的是docker来启动MySQL容器的话解决此问题执行以下指令即可:
#将加密规则改为mysql_native_password,即将修改此属性default-authentication-plugin=mysql_native_password
docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql --default-authentication-plugin=mysql_native_password