问题描述:
在学习docker时,我使用docker下载了一个mysql镜像,并将其放入了容器设置了映射并运行;但在使用navicat进行测试链接时出现了这个错误;由于docker下载镜像时,默认下载最新的镜像,而在此时的docker的mysql的tag中,这个可以从 docker hub 官网上看到是什么版本的,如图所示,我现在下载的是:8.0 的mysql,这也就问题的关键了,高版本的mysql中的用户的密码plugin是 非mysql_native_password 。
解决办法:
- 使用docker命令进入命令行:
docker exec -it xxxxxx bash
- 进入mysql :
mysql uroot -p
- 查看mysql的用户信息:
select host,user,plugin,authentication_string from mysql.user;
注意:host为 % 表示不限制ip ; localhost表示本机使用 plugin非mysql_native_password 则需要修改密码.
- 将msyql 8.0 的
不限制ip 的plugin
修改mysql_native_password 命令:
mysql> USE mysql;mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword';mysql> FLUSH PRIVILEGES;
附录:
- https://blog.csdn.net/qq_22211217/article/details/80415248
- https://blog.csdn.net/u012604745/article/details/80632860
- https://blog.csdn.net/changsimeng/article/details/82454214