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 测试连接。