1、拉取最新的mysql: docker pull mysql:latest
2、配置端口映射以及密码启动docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
3、进入docker中mysql控制台: docker exec -it mysql-test /bin/bash
说明:mysql-test(运行mysql容器的name,可以通过docker ps 命令查看)
4、mysql -u root -p 输入密码后,进入mysql命令窗口
5、依次输入以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ,这条可以不执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新使用本地主机连接的root用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';#更新使用远程主机连接的root用户的密码
FLUSH PRIVILEGES; #刷新权限
说明:%允许来自任何ip的连接 localhost允许本机的连接
6、select host,user,plugin,authentication_string from mysql.user;
![](https://i-blog.csdnimg.cn/blog_migrate/e0d41bda8541ae8ba99aa192bad3e4d9.png)
7、退出mysql使用:exit;
8、验证成功以及原理:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,而我使用的Navicat 版本使用mysql_native_password验证插件,两个插件不兼容导致了登录异常。当然还有另外一种办法就是下载最新的Navicat 。