原因:
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;