原因:
mysql8 之前的版本中加密规则是 mysql_native_password,但是在mysql8之后,加密规则是caching_sha2_password,所以navicat低版本不支持了,要么升级navicat,要么把用户密码登录的加密规则还原成mysql_native_password这种加密方式,这里我们使用第二种方式。
1:查看自己的mysql容器别名(NAMES)
[root@lyy local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
030013354b65 mysql "docker-entrypoint..." 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql01
1: docker exec -it mysql01 bash //mysql01 是mysql容器的别名
2: mysql -uroot -p
3:输入密码
4:进入mysql>命令行界面
5:进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)
5.1:mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
5.2:mysql>FLUSH PRIVILEGES;
6:更改加密规则:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
7:更新root用户密码:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
8:刷新权限:
flush privileges;
设置完成,再次使用 Navicat 连接数据库,连接成功