Docker 部署 MySQL 8.0:从快速体验到生产环境配置
如果你只是想快速验证功能,可以使用简化版命令;若涉及数据持久化或生产环境,建议采用完整版方案。以下分别介绍两种模式的启动方式及关键注意事项。
快速体验模式
此方案适合本地测试,容器删除后数据会丢失。
docker run -d \
--name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0
生产环境推荐模式
为了长期稳定运行,我们需要挂载数据目录、配置文件,并设置时区与重启策略。
1. 创建宿主机目录
mkdir -p ~/docker/mysql/{data,conf}
2. 启动容器
docker run -d \
--name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_secure_password \
-e TZ=Asia/Shanghai \
-v ~/docker/mysql/data:/var/lib/mysql \
-v ~/docker/mysql/conf:/etc/mysql/conf.d \
--restart unless-stopped \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
关键参数解析
| 参数 | 说明 |
|---|---|
-d | 后台守护进程运行 |
--name | 指定容器名称,便于管理 |
-p | 端口映射,宿主机 3306 对应容器内 3306 |
-e | 环境变量,如 root 密码和时区 |
-v | 卷挂载,实现数据持久化 |
--restart | 自动重启策略 |
--character-set-server | 设置字符集为 utf8mb4,支持 emoji |
常见问题处理
远程连接失败
MySQL 8.0 默认使用 caching_sha2_password 插件,旧版客户端(如老版本 Navicat)可能无法连接。此时需修改认证方式:
- 进入容器:
docker exec -it mysql8 mysql -uroot -p - 执行 SQL 切换插件:
ALTER USER @ IDENTIFIED mysql_native_password ; FLUSH PRIVILEGES;


