1、从docker中获取mysql8.0.13镜像
docker pull mysql:8.0.13
通过 docker images 命令查看镜像是否获取到了
2、运行 mysql8.0.13 镜像
docker run --name mysql8013 -p 8323:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.13
通过 docker ps 命令查看镜像是否启动成功
3、登陆mysql
mysql -uroot -proot -D mysql8013
发现登陆不上去,因为mysql8之后root用户的密码验证方式变了。root的用户的加密方式为caching_sha2_passoword,而navicat连接所用的方式为native_password。
4、解决方法:进入mysql8.0.13容器
docker exec -it mysql8013 /bin/bash
5、在容器里面登陆数据库
mysql -uroot -proot mysql为远程连接和本地连接提供了不同的密码验证方式。所以在容器里可以登陆。
6、进入mysql库,查看user表,可以看到root加密方式
use mysql;
select host, user, plugin from user \G
7、修改root用户插件验证方式:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
8、刷新权限
flush privileges;
9、然后退出mysql
exit;
10、给mysql8013安装vim编辑器
apt-get update && apt-get install vim -y
11、安装vim完成后,修改数据库编码
进入mysql.cnf
vim /etc/mysql/conf.d/mysql.cnf 增加以下内容,然后保存退出
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
12、查看mysql编码
show variables like'character%'; -- 如果编码没变,可能要重启这个mysql容器
13、退出 mysql8013容器
Ctrl+D
14、查看mysql8013数据卷挂载位置:
docker inspect mysql8013
然后观察 "Mounts"对应的值,其中 "Source" 对应的值就是本机的挂载路径。
15、通过 navicat 测试连接。