下载MySQL镜像

1
docker pull mysql

创建挂载目录

创建data目录用来挂载数据库文件,创建conf目录用来挂载配置文件

image-20230627164838944

创建my.cnf文件

在conf目录下新建my.cnf文件,并加入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[client]
#socket = /d/dockers/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /d/dockers/mysql/mysqld.sock
#pid-file = /d/dockers/mysql/mysqld.pid
datadir = /d/dockers/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/

创建容器

创建一个mysql容器,命令如下:

1
docker run --name mysql --restart=always -p 3306:3306 -v /e/docker/mysql/data:/var/lib/mysql/ -v /e/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_ROOT_HOST=% -d mysql:latest --default-authentication-plugin=mysql_native_password

我这里把数据库文件挂载到了上面创建的data目录,并且上面配置文件中配置的一些日志文件也相应的挂载到了data目录,方便以后查看。

容器运行完成后,data目录下也自动出现了数据库的文件
image-20230627172942042
当把容器删除之后,data目录下的文件依旧存在,下次启动另一个mysql容器时把/var/lib/mysql直接挂载到data目录就可以看到之前创建的数据库,并且数据库中的数据依旧存在。

使用navicat客户端工具连接

提示连接成功
image-20230627173043644