@@ -47,13 +47,7 @@ mysql -uroot -p12345678
4747mkdir mysql && cd mysql
4848```
4949
50- 在 ` mysql ` 目录下创建一个 ` mysql_volumes ` 目录,并切换到该目录,该目录是用于存储 mysql 容器持久化的数据的。
51-
52- ``` shell
53- mkdir mysql_volumes && cd mysql_volumes
54- ```
55-
56- 在 ` mysql_volumes ` 目录下创建 ` data ` 目录【该目录是 mysql 容器持久化数据的目录】。
50+ 在 ` mysql ` 目录下创建 ` data ` 目录【该目录是 mysql 容器持久化数据的目录】。
5751
5852``` shell
5953mkdir data
@@ -63,8 +57,7 @@ mkdir data
6357
6458``` shell
6559mysql
66- └── mysql_volumes
67- └── data
60+ └── data
6861```
6962
7063给 ` data ` 目录分配权限。
@@ -77,38 +70,39 @@ chmod -R 777 data
7770
7871``` shell
7972docker run -p 3306:3306 --name mysql8 \
80- -v $PWD /mysql_volumes/ data:/var/lib/mysql \
73+ -v $PWD /data:/var/lib/mysql \
8174 -e MYSQL_ROOT_PASSWORD=12345678 \
8275 -d mysql:8.4.1
8376```
8477
8578以上 docker run 命令讲解:
8679- ` -p ` 参数用于将主机的端口号 3306 映射到容器的端口号 3306。
8780- ` --name ` :容器名称。
88- - ` -v ` :参数用于将主机的目录映射到容器的目录,这里是将主机的 ` mysql_volumes/ data` 目录映射到容器的 ` /var/lib/mysql ` 目录。
81+ - ` -v ` :参数用于将主机的目录映射到容器的目录,这里是将主机的 ` data ` 目录映射到容器的 ` /var/lib/mysql ` 目录。
8982- ` -e ` :参数用于设置环境变量,这里设置环境变量 ` MYSQL_ROOT_PASSWORD ` 的值为 ` 12345678 ` 。
9083- ` -d ` :参数用于将 MySQL 容器设置为后台运行模式。
9184- ` mysql:8.4.1 ` :镜像名称。
9285- ` \ ` :换行符。
9386
9487将 MySQL 容器的日志目录、配置文件目录、数据数据初始化目录、插件目录持久化到主机上,因此当容器被删除时,数据不会丢失。
9588
96- 在 mysql_volumes 目录下创建 ` conf ` 目录,该目录是用于存储 MySQL 容器配置文件的目录将 MySQL 容器内的配置文件映射出来到宿主机上的。
89+ 在 ` mysql ` 目录下创建 ` config ` 目录,该目录是用于存储 MySQL 容器配置文件的目录将 MySQL 容器内的配置文件映射出来到宿主机上的。
9790``` shell
98- mkdir conf
91+ mkdir config
9992```
10093
10194创建完 ` conf ` 目录之后,目录结构如下:
10295
10396``` shell
10497mysql
105- └── mysql_volumes
106- ├── conf
107- └── data
98+ ├── config
99+ └── data
108100```
109101
110102### 创建 my.cnf 配置文件
111103
104+ 在 ` config ` 目录下创建 ` my.cnf ` 配置文件。
105+
112106具体的 MySQL 数据库 ` my.cnf ` 配置文件内容如下:
113107
114108``` shell
@@ -251,9 +245,9 @@ max_heap_table_size = 64M
251245
252246### 创建目录和赋予权限
253247
254- 创建 ` my.cnf ` 配置文件之后,就需要在 ` mysql_volumes ` 目录下创建 ` log ` 目录【该目录用于存储 MySQL 容器的日志文件】、` init ` 目录【该目录是用于存储 MySQL 容器的初始化脚本文件】。
248+ 创建 ` my.cnf ` 配置文件之后,就需要在 ` mysql ` 目录下创建 ` log ` 目录【该目录用于存储 MySQL 容器的日志文件】、` init ` 目录【该目录是用于存储 MySQL 容器的初始化脚本文件】。
255249
256- 在 ` mysql_volumes ` 目录下创建 ` log ` 目录、` init ` 目录。
250+ 在 ` mysql ` 目录下创建 ` log ` 目录、` init ` 目录。
257251
258252``` shell
259253mkdir log init
@@ -263,12 +257,11 @@ mkdir log init
263257
264258``` shell
265259mysql
266- └── mysql_volumes
267- ├── conf
268- │ └── my.cnf
269- ├── data
270- ├── init
271- └── log
260+ ├── config # 配置文件目录
261+ │ └── my.cnf # 配置文件
262+ ├── data # 数据目录
263+ ├── init # 初始化脚本目录
264+ └── log # 日志目录
272265```
273266
274267切换到 my.cnf 配置文件所在的路径【所在的目录】,给 my.cnf 配置文件添加权限。
@@ -290,10 +283,10 @@ chmod -R 777 data log init
290283``` shell
291284# 这个命令一定是要在 mysql 目录下执行
292285docker run -p 3306:3306 --name mysql8 \
293- -v $( pwd) /mysql_volumes/ data:/var/lib/mysql \
294- -v $( pwd) /mysql_volumes/conf :/etc/mysql/conf.d \
295- -v $( pwd) /mysql_volumes/ log:/var/log \
296- -v $( pwd) /mysql_volumes/ init:/docker-entrypoint-initdb.d \
286+ -v $( pwd) /data:/var/lib/mysql \
287+ -v $( pwd) /config :/etc/mysql/conf.d \
288+ -v $( pwd) /log:/var/log \
289+ -v $( pwd) /init:/docker-entrypoint-initdb.d \
297290 -e MYSQL_ROOT_PASSWORD=12345678 \
298291 --restart=unless-stopped \
299292 -d mysql:8.4.1
@@ -308,30 +301,28 @@ docker run -p 3306:3306 --name mysql8 \
308301
309302``` shell
310303mysql
311- ├── mysql.yaml
312- └── mysql_volumes
313- ├── conf
314- │ └── my.cnf
315- ├── data
316- ├── init
317- └── log
304+ ├── config # 配置文件目录
305+ │ └── my.cnf # 配置文件
306+ ├── data # 数据目录
307+ ├── init # 初始化脚本目录
308+ ├── log # 日志目录
309+ └── mysql.yaml # 启动 MySQL 容器的 Docker Compose 配置文件
318310```
319311
320312目录结构详细说明:
321313- ` mysql.yaml ` :Docker Compose 配置文件,用于启动 MySQL 容器。
322- - ` mysql_volumes ` :MySQL 数据卷目录,用于存储 MySQL 容器映射数据。
323- - ` conf ` :MySQL 配置文件目录,用于存储 MySQL 配置文件。
314+ - ` config ` :MySQL 配置文件目录,用于存储 MySQL 配置文件。
324315- ` data ` :MySQL 数据目录,用于存储 MySQL 数据。
325316- ` init ` :MySQL 初始化脚本目录,用于存储 MySQL 初始化脚本。
326317- ` log ` :MySQL 日志目录,用于存储 MySQL 日志。
327318
328319### 创建目录和赋予权限
329320
330321``` shell
331- # 创建mysql_volumes并切换到mysql_volumes目录下
332- mkdir mysql_volumes && cd mysql_volumes
322+ # 创建mysql并切换到mysql目录下
323+ mkdir mysql && cd mysql
333324
334- # 在 mysql_volumes 目录下创建 conf 目录、data 目录、log 目录、init 目录
325+ # 在 mysql 目录下创建 conf 目录、data 目录、log 目录、init 目录
335326mkdir conf data log init
336327
337328# 在 conf 目录下创建 my.cnf 配置文件,然后再使用 vim 来编辑 my.cnf 配置文件
@@ -348,7 +339,7 @@ cd conf && touch my.cnf
348339chmod 644 my.cnf
349340```
350341
351- 再给 ` mysql_volumes ` 目录下的 ` data ` 、` log ` 、` init ` 目录添加权限。
342+ 再给 ` mysql ` 目录下的 ` data ` 、` log ` 、` init ` 目录添加权限。
352343``` shell
353344chmod -R 777 data log init
354345```
@@ -369,10 +360,10 @@ services:
369360 ports :
370361 - 13306:3306
371362 volumes :
372- - ./mysql_volumes/ data:/var/lib/mysql
373- - ./mysql_volumes/conf :/etc/mysql/conf.d
374- - ./mysql_volumes/ log:/var/log
375- - ./mysql_volumes/ init:/docker-entrypoint-initdb.d
363+ - ./data:/var/lib/mysql
364+ - ./config :/etc/mysql/conf.d
365+ - ./log:/var/log
366+ - ./init:/docker-entrypoint-initdb.d
376367
377368# container network
378369networks :
0 commit comments