在京东云(或任何基于 Linux 的云服务器)上通过 Docker 安装 MySQL 8.0,核心步骤与在其他云厂商上基本一致。以下是详细的操作指南,包含快速启动命令和推荐的生产环境配置。
前置准备
确保你的京东云实例已满足以下条件:
- 操作系统:推荐使用 CentOS 7+/Ubuntu 20.04+ / Debian 10+。
- 网络策略:登录京东云控制台,在安全组中放行 3306 端口(允许特定 IP 访问以提高安全性)。
- Docker 环境:服务器需已安装 Docker。如果未安装,请先执行安装脚本(以 Ubuntu/CentOS 为例见下文)。
第一步:安装并启动 Docker(若未安装)
如果你的服务器还没有 Docker,请根据系统选择以下命令安装:
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
CentOS/RHEL:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
第二步:拉取 MySQL 8.0 镜像
建议使用官方镜像,并指定具体版本标签(如 8.0 或 8.0.35)以确保稳定性。
docker pull mysql:8.0
第三步:运行 MySQL 容器
为了数据持久化和方便管理,强烈建议将配置文件和数据目录挂载到宿主机。
方案 A:快速测试版(不推荐生产使用)
仅用于本地测试,重启后数据可能丢失(除非挂载卷),且默认密码为随机生成。
docker run --name my-mysql
-e MYSQL_ROOT_PASSWORD=your_strong_password
-p 3306:3306
-d mysql:8.0
方案 B:生产环境推荐版(持久化 + 自定义配置)
此方案将数据文件、日志和配置文件挂载到本地,防止容器删除导致数据丢失。
1. 创建必要的目录结构
# 创建数据目录
mkdir -p /opt/mysql/data
mkdir -p /opt/mysql/conf.d
mkdir -p /opt/mysql/logs
# 初始化一个空的配置文件 (可选,用于修改时区等)
cat > /opt/mysql/conf.d/my.cnf <<EOF
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone='+08:00'
max_connections=1000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
EOF
2. 启动容器
docker run --name my-mysql-prod
-e MYSQL_ROOT_PASSWORD=your_strong_password
-e TZ=Asia/Shanghai
-v /opt/mysql/data:/var/lib/mysql
-v /opt/mysql/conf.d:/etc/mysql/conf.d
-v /opt/mysql/logs:/var/log/mysql
-p 3306:3306
-d mysql:8.0
参数说明:
-e MYSQL_ROOT_PASSWORD: 设置 root 用户密码(必须)。-e TZ: 设置时区为我国上海时间。-v ...: 将宿主机的目录映射到容器内,实现数据持久化。-p 3306:3306: 将宿主机的 3306 端口映射到容器的 3306 端口。
第四步:验证安装
-
检查容器状态:
docker ps确认
my-mysql或my-mysql-prod状态为Up。 -
进入容器查看日志:
docker logs my-mysql-prod如果看到
ready for connections字样,说明启动成功。 -
连接测试:
在本地电脑(或服务器内部)使用客户端工具(如 Navicat, DBeaver, 或命令行)连接:- Host: 京东云公网 IP(注意:如果是本地测试可用
127.0.0.1或localhost) - Port: 3306
- User: root
- Password: 你设置的密码
命令行连接示例:
# 需要先安装 mysql-client docker exec -it my-mysql-prod mysql -u root -p - Host: 京东云公网 IP(注意:如果是本地测试可用
⚠️ 京东云特别注意事项
-
安全组配置:
这是最容易忽略的一步。即使 Docker 端口映射了,如果京东云控制台的安全组规则没有添加TCP 3306的入站规则,外部无法连接。- 路径:京东云控制台 -> 弹性计算 -> 实例 -> 安全组 -> 添加入方向规则。
- 协议:TCP,端口:3306,授权对象:建议填写你自己的办公 IP,不要填
0.0.0.0/0以防被暴力破解。
-
性能优化:
数据库对 I/O 敏感。建议在京东云购买时选择SSD 云盘,并在挂载数据卷时使用高性能磁盘。 -
备份策略:
虽然使用了-v挂载,但建议定期在宿主机执行mysqldump或使用京东云提供的快照功能对云盘进行备份。 -
防火墙:
检查服务器内部的防火墙(如firewalld或ufw)是否拦截了 3306 端口。- CentOS:
systemctl stop firewalld(测试用) 或配置允许 3306。 - Ubuntu:
ufw allow 3306.
- CentOS:
完成以上步骤后,你就成功在京东云上部署了 MySQL 8.0 了。
轻量云Cloud