在京东云(或任何基于 Linux 的云服务器)上通过 Docker 安装 MySQL 8.0,核心步骤与在其他云厂商或本地环境一致。以下是标准的操作指南,包含快速启动和持久化配置两种常用方案。
前置准备
确保你的京东云服务器已安装 Docker 和 Docker Compose(推荐)。如果未安装,请先执行以下命令:
# 更新包索引
sudo apt-get update -y
# 安装 Docker
sudo apt-get install docker.io -y
# 安装 Docker Compose (可选,但推荐用于多容器管理)
sudo apt-get install docker-compose -y
# 将当前用户加入 docker 组,避免每次使用 sudo
sudo usermod -aG docker $USER
# 注意:执行完上述命令后,需要重新登录或执行 newgrp docker 才能生效
方案一:使用 docker run 快速启动(适合测试/临时使用)
如果你只需要快速运行一个实例,可以使用单条命令完成。
1. 创建数据目录
为了数据安全,建议将数据库文件挂载到宿主机目录,防止容器删除导致数据丢失。
mkdir -p /opt/mysql/data
chmod 777 /opt/mysql/data
2. 启动容器
运行以下命令。请根据实际需求修改环境变量(如 MYSQL_ROOT_PASSWORD、端口映射等)。
docker run -d
--name mysql8
-e MYSQL_ROOT_PASSWORD=your_password_here
-e MYSQL_DATABASE=test_db
-e MYSQL_USER=admin
-e MYSQL_PASSWORD=admin_password
-p 3306:3306
-v /opt/mysql/data:/var/lib/mysql
--restart always
mysql:8.0
参数说明:
-p 3306:3306:将宿主机的 3306 端口映射到容器内部。-v ...:数据卷挂载,确保数据持久化。--restart always:容器重启策略,服务器重启后自动拉起。- 安全提示:生产环境中请务必替换
your_password_here为强密码,并考虑限制MYSQL_ROOT_PASSWORD的明文暴露(可通过配置文件方式)。
方案二:使用 docker-compose 管理(推荐生产环境)
使用 docker-compose.yml 可以更方便地管理环境变量、网络和数据卷。
1. 创建项目目录
mkdir -p /opt/mysql8
cd /opt/mysql8
2. 编写 docker-compose.yml
创建并编辑文件:
version: '3'
services:
mysql:
image: mysql:8.0
container_name: mysql8_prod
restart: always
environment:
MYSQL_ROOT_PASSWORD: YourStrongRootPassword! # 请修改
MYSQL_DATABASE: myapp_db
MYSQL_USER: app_user
MYSQL_PASSWORD: AppUserPassword! # 请修改
ports:
- "3306:3306"
volumes:
- ./data:/var/lib/mysql
# 可选:挂载自定义配置文件
# - ./my.cnf:/etc/mysql/conf.d/my.cnf
networks:
- db_net
command: --default-authentication-plugin=mysql_native_password
networks:
db_net:
driver: bridge
3. 启动服务
docker-compose up -d
⚠️ 京东云关键配置:安全组(防火墙)
在京东云控制台,默认的安全组规则通常只允许 SSH (22),不会自动开放 3306。如果不配置,外部将无法连接数据库。
- 登录 京东云控制台。
- 进入 云服务器 (ECS) -> 选择你的实例 -> 点击 安全组。
- 找到该实例关联的安全组,点击 添加规则。
- 填写如下信息:
- 协议类型:TCP
- 端口范围:3306
- 授权对象:
0.0.0.0/0(允许所有 IP,仅用于开发测试) 或指定你的本机 IP (如192.168.x.x/32)。生产环境强烈建议仅允许特定 IP 访问。
- 保存规则。
验证与连接
1. 检查容器状态
docker ps
确认 mysql8 容器状态为 Up。
2. 查看日志
docker logs mysql8
观察是否有 Ready for connections 字样。
3. 本地连接测试
在你的本地电脑(或另一台服务器)使用 MySQL 客户端连接:
mysql -h <京东云公网IP> -P 3306 -u root -p
输入你在 Docker 启动时设置的 root 密码即可登录。
常见问题排查
- 无法连接:首先检查京东云控制台的“安全组”是否放行了 3306 端口;其次检查
docker ps中端口映射是否正确(0.0.0.0:3306->3306/tcp)。 - 字符集问题:MySQL 8.0 默认字符集为
utf8mb4,通常无需额外配置。如果需要兼容旧系统,可在docker-compose.yml的command中添加--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci。 - 权限错误:如果是从低版本升级,可能需要初始化数据目录,确保
/opt/mysql/data目录权限正确(建议chown -R 999:999,因为 MySQL 镜像内默认以 uid 999 运行)。
CLOUD云计算