1. 选择镜像

通过DockerHub我们可以查到MySQL的所有可用镜像,一般来说我们只选官方提供的镜像信息,如下图:

【Docker】简单搭建MySQL8_docker

拷贝红框中脚本在命令行下执行即可下载镜像。


  1. 镜像可用性验证

镜像下载完毕先启动镜像看看后台输出是否正常(因为部分镜像会受宿主机硬件限制)

Windows系统

docker run -p 3806:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql8 -d --restart=always mysql:8.0

Linux系统

sudo docker run -p 3806:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql8 -d --restart=always mysql:8.0


3. 创建挂载目录

Windows系统

docker cp mysql8:/var/lib/mysql D:\software\Docker\data\mysql8\data
docker cp mysql8:/etc/mysql D:\software\Docker\data\mysql8\config

Linux系统

sudo docker cp mysql8:/var/lib/mysql /data/docker/data/mysql
sudo docker cp mysql8:/etc/mysql /data/docker/config/mysql


  1. 修改配置文件
sudo vim /data/docker/config/mysql/mysql/conf.d/mysql.cnf

有的时候docker cp没有将mysql.cnf文件拷贝到宿主机(不知道是什么原因,真的就没有这个文件),这个时候也不需要怕,直接自己新建一个就好了。如下图:

【Docker】简单搭建MySQL8_mysql_02


5. 之后将当前镜像删除并启动一个新的镜像(指定挂载目录配置)

Windows系统

docker run -p 3806:3306 \
-v D:\software\Docker\data\mysql8\data\mysql:/var/lib/mysql \
-v D:\software\Docker\data\mysql8\config\mysql:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--name mysql8 \
-d --restart=always mysql:8.0

Linux系统

sudo docker run -p 3806:3306 \
--network micnetwork \
--ip 192.20.0.8 \
-v /data/docker/data/mysql/mysql:/var/lib/mysql \
-v /data/docker/config/mysql/mysql:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--name mysql8 \
-d --restart=always mysql:8.0

MacOS系统

docker run -p 3806:3306 \
--network micnetwork \
--ip 172.20.0.7 \
-v /Users/yuanzhenhui/Documents/docker_data/mysql8/config/mysql:/etc/mysql \
-v /Users/yuanzhenhui/Documents/docker_data/mysql8/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--name mysql8 -d \
--restart=always mysql:8.0
  1. 创建超级账号

在MySQL8.0版本里面已经没有办法直接给root用户进行授权,因此只能够通过新建一个用户之后再对这个用户进行授权

【Docker】简单搭建MySQL8_mysql_03

因此只能够创建一个新的来了,如下代码:

CREATE USER 'yzh'@'%' IDENTIFIED BY '0623';
GRANT ALL PRIVILEGES ON *.* TO 'yzh'@'%' WITH GRANT OPTION;

另外,通过MySQL官方提供的MySQL WorkBench软件的旧版本是无法登陆MySQL8.0的,原因在于MySQL8.0的连接方式已经发生改变,因此如果出现宿主机无法对服务器进行连接,可以尝试更新一下客户端再进行连接。