Docker 部署 MySQL 教程(含数据持久化与初始化脚本挂载)
·
MySQL 是最常用的关系型数据库之一,而使用 Docker 部署 MySQL 可以极大简化安装流程,让环境更可控、迁移更方便。
本文将详细讲解如何使用 Docker 一条命令快速部署一个带有持久化与自动初始化功能的 MySQL 服务。
一、环境准备
确保系统已正确安装 Docker。
(如果尚未安装,可以参考我另一篇文章:《CentOS 安装 Docker 全流程》)
二、拉取 MySQL 镜像
执行以下命令从 Docker Hub 拉取 MySQL 官方镜像:
docker pull mysql
镜像下载完成后,可通过以下命令查看:
docker images
三、创建并运行 MySQL 容器
执行以下命令启动一个 MySQL 实例:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v ./mysql/data:/var/lib/mysql \
-v ./mysql/conf:/etc/mysql/conf.d \
-v ./mysql/init:/docker-entrypoint-initdb.d \
mysql
四、参数详解
| 参数 | 说明 |
|---|---|
--name mysql | 指定容器名称为 mysql |
-p 3306:3306 | 将宿主机 3306 端口映射到容器 3306 端口 |
-e TZ=Asia/Shanghai | 设置容器时区为中国上海(东八区) |
-e MYSQL_ROOT_PASSWORD=123 | 设置 MySQL 的 root 用户密码 |
-v ./mysql/data:/var/lib/mysql | 挂载数据目录,实现数据库文件持久化 |
-v ./mysql/conf:/etc/mysql/conf.d | 挂载配置文件目录,可自定义 MySQL 配置 |
-v ./mysql/init:/docker-entrypoint-initdb.d | 挂载初始化脚本目录,容器首次启动时会自动执行其中的 .sql 或 .sh 文件 |
五、验证 MySQL 服务
查看容器是否成功启动:
docker ps
如果状态显示为 Up,则 MySQL 已成功运行。
此时可以使用客户端连接:
mysql -h 127.0.0.1 -P 3306 -u root -p
输入密码 123 即可登录。
六、初始化 SQL 脚本说明
放置在 ./mysql/init 目录下的 .sql 或 .sh 文件,会在容器首次启动时自动执行。
例如:
# ./mysql/init/init.sql
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
当容器启动后,会自动创建名为 mydb 的数据库,非常适合初始化项目数据库结构。
七、数据持久化验证
容器删除后,数据仍保存在宿主机的 ./mysql/data 目录中。
可通过以下命令验证:
docker rm -f mysql
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -v ./mysql/data:/var/lib/mysql mysql
重启容器后数据依然存在 ✅
八、总结
通过以上步骤,你已经成功完成:
-
使用 Docker 一键部署 MySQL
-
配置数据持久化目录
-
设置自动执行初始化 SQL 脚本
-
指定时区与密码
这套方案非常适合开发测试环境,简单稳定,方便迁移。
更多推荐


所有评论(0)