Docker部署mysql:Docker部署MySQL详细教

Docker部署MySQL:零基础也能搞定的完整教程

很多新手在第一次接触 Docker部署mysql 时,会被参数和报错吓到。
其实只要把几个核心步骤理清楚,从拉取镜像到容器跑起来,全程不过 5 分钟。
本文会尽量用最直白的方式带你走一遍完整流程,同时把容易踩的坑都指出来。

准备工作:先确认你的环境

在开始之前,请确保你已经安装了 Docker。
如果你用的是服务器(比如 CentOS 或 Ubuntu),可以执行下面这条命令检查:

docker --version

如果提示 command not found,说明还没装 Docker。
安装方法很简单——大部分系统可以用官方的一键安装脚本:

curl -fsSL https://get.docker.com | sh

安装完成后,启动 Docker 服务:

sudo systemctl start docker

如果你是宝塔面板用户,可以直接在宝塔后台的“软件商店”里找到 Docker 管理器,一键安装并启动,连命令都不用敲。
确认 Docker 运行后,我们就可以正式开始 Docker部署mysql 了。

拉取 MySQL 镜像并启动容器

MySQL 的官方镜像名为 mysql,我们直接拉取最新的 8.0 版本(你也可以指定版本号,比如 mysql:8.0.34):

docker pull mysql:8.0

拉取完成后,运行下面的命令就能启动一个 MySQL 容器:

docker run -d \
  --name mysql-8 \
  -e MYSQL_ROOT_PASSWORD=MyStrongP@ss123 \
  -p 3306:3306 \
  mysql:8.0

参数说明:

  • -d:后台运行。
  • --name:给容器取个名字,后面方便管理。
  • -e MYSQL_ROOT_PASSWORD:设置 root 用户的密码,请换成你自己的强密码
  • -p 3306:3306:把宿主机的 3306 端口映射到容器内的 3306 端口,这样外部工具才能连上来。

执行完后,终端会返回一串容器 ID,说明容器已经启动了。
你可以用 docker ps 看看容器是否正常运行:

docker ps

如果看到 mysql-8 的状态是 Up,就说明启动成功了。

配置数据持久化与字符集

直接这样跑有个问题:容器一旦被删除,里面的数据库数据就全丢了。
所以生产环境一定要做数据持久化
我们需要在宿主机上创建一个目录,挂载到容器里的 /var/lib/mysql

mkdir -p /data/mysql/data

然后重新创建容器(先删掉之前那个):

docker stop mysql-8 && docker rm mysql-8
docker run -d \
  --name mysql-8 \
  -e MYSQL_ROOT_PASSWORD=MyStrongP@ss123 \
  -p 3306:3306 \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf:/etc/mysql/conf.d \
  mysql:8.0

这里新增了两个 -v 参数:

  • 第一个挂载数据目录,即使容器重建,数据还在。
  • 第二个挂载配置目录,我们可以放自定义的配置文件,比如修改默认字符集。

要在挂载的配置目录下新建一个 my.cnf 文件:

sudo tee /data/mysql/conf/my.cnf <<-'EOF'
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
EOF

然后重启容器使配置生效:

docker restart mysql-8

常见问题与避坑说明

  1. 容器启动后马上退出:最常见的原因是密码不符合 MySQL 的安全策略。避免用太简单的密码(比如 123456),可以用大小写字母+数字+特殊符号的组合。
  2. 远程连接不上:默认 MySQL 只允许本地连接。你需要进入容器修改 root 的 host 为 %
   docker exec -it mysql-8 mysql -uroot -pMyStrongP@ss123

在 MySQL 提示符下执行:

   ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MyStrongP@ss123';
   FLUSH PRIVILEGES;
  1. 端口冲突:如果宿主机已经装了 MySQL 或其他程序占用 3306 端口,可以把映射端口改成其他值,比如 -p 3307:3306,客户端连接时用 3307。
  2. 数据卷权限问题:挂载的目录如果权限不对,容器会因无法写入而退出。可以用 chown -R 999:999 /data/mysql/data 把目录所有权改成 MySQL 容器内使用的 uid(默认 999)。

验证 MySQL 是否正常运行

先在容器内测试:

docker exec -it mysql-8 mysql -uroot -p

输入密码后进入 MySQL 命令行,执行 SHOW DATABASES; 能看到默认数据库就算成功。

也可以用本地的可视化工具(如 Navicat、DBeaver)连接服务器的 IP(比如 123.45.67.89)+ 端口 3306,使用 root 和刚才设置的密码。
如果连接成功,说明 Docker部署mysql 已经完美落地。

至此,你已经掌握了用 Docker 快速部署 MySQL 的核心流程。
以后需要扩容或迁移数据库时,只要把数据目录 /data/mysql/data 打包带走,换个宿主机挂载上就能恢复数据,非常方便。
如果在操作中遇到报错,记得先检查端口、密码和数据卷这三个最容易出问题的地方。

分享到:
上一篇
Linux服务器磁盘阵列维护:Linux磁盘阵列维护实战
下一篇
从零开始:服务器应用服务器部署完整操作指南
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意