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 脚本

  • 指定时区与密码

这套方案非常适合开发测试环境,简单稳定,方便迁移。

更多推荐