1、拉取最新的mysql:docker pull mysql
2、配置端口映射以及密码启动mysql:docker run ‐p 3306:3306 ‐‐name mysql02 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d
mysql
3、进入docker中mysql控制台:docker exec -it 406251a4f34d bash
说明:406251a4f34d(运行mysql容器的id,可以通过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允许本机的连接
7、select host,user,plugin,authentication_string from mysql.user;
8、退出mysql使用:exit;
9、验证成功以及原理:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,而我使用的Navicat 版本使用mysql_native_password验证插件,两个插件不兼容导致了登录异常。当然还有另外一种办法就是下载最新的Navicat 。