在京东云(或任何基于 Linux 的云服务器)上通过 Docker 安装 MySQL 8.0,核心步骤与在本地或其他云平台基本一致。以下是完整的操作指南,包含拉取镜像、创建数据目录、启动容器以及后续的基础配置建议。
1. 前置准备
确保你的京东云服务器已经安装了 Docker 和 Docker Compose(可选,但推荐)。如果尚未安装,请执行以下命令:
# 更新软件源
sudo yum update -y # CentOS/RedHat 系列
# 或
sudo apt-get update -y # Ubuntu/Debian 系列
# 安装 Docker (以 CentOS 为例)
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version
2. 创建数据持久化目录
为了避免容器删除后数据丢失,建议先在宿主机创建用于存放数据的目录。
# 创建目录结构
mkdir -p /data/mysql8/data
mkdir -p /data/mysql8/logs
# 设置权限(防止因权限问题导致容器无法写入)
chmod -R 755 /data/mysql8
3. 启动 MySQL 8.0 容器
使用 docker run 命令直接启动。为了安全起见,我们不要将数据库端口暴露给公网(除非你有特殊需求并配置了安全组),通常建议只映射到内网或特定 IP。
方案 A:单行命令启动(快速测试)
docker run -d
--name mysql8
-e MYSQL_ROOT_PASSWORD=your_strong_password
-e MYSQL_DATABASE=myapp
-e MYSQL_USER=myuser
-e MYSQL_PASSWORD=user_password
-p 3306:3306
-v /data/mysql8/data:/var/lib/mysql
-v /data/mysql8/logs:/var/log/mysql
--restart=always
mysql:8.0
注意:请将 your_strong_password 替换为你自己的强密码。-p 3306:3306 表示将宿主机的 3306 端口映射到容器的 3306 端口。
方案 B:使用 Docker Compose(推荐生产环境)
创建一个 docker-compose.yml 文件,管理更灵活,方便扩展。
version: '3'
services:
mysql:
image: mysql:8.0
container_name: mysql8
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_strong_password
MYSQL_DATABASE: myapp
MYSQL_USER: myuser
MYSQL_PASSWORD: user_password
ports:
- "3306:3306"
volumes:
- /data/mysql8/data:/var/lib/mysql
- /data/mysql8/logs:/var/log/mysql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-time-zone=+08:00
- --max_connections=500
保存为 docker-compose.yml 后,运行:
docker-compose up -d
4. 京东云安全组配置(关键步骤)
由于是在京东云 ECS 上,默认情况下云服务器的防火墙和安全组会拦截外部连接。如果你需要从本地电脑或其他服务器连接该 MySQL,必须登录 京东云控制台 进行配置:
- 进入实例详情页,找到 安全组 标签页。
- 编辑当前实例绑定的安全组规则。
- 添加一条 入方向 规则:
- 协议类型:TCP
- 端口范围:3306
- 授权对象:
- 若仅允许本机访问:填
127.0.0.1/32或localhost。 - 若需远程开发:填你本地的公网 IP(如
xxx.xxx.xxx.xxx/32)。 - 若允许内网其他京东云实例访问:可填内网网段(如
192.168.0.0/16,具体视你的 VPC 规划而定)。
- 若仅允许本机访问:填
- 优先级:保持默认即可。
⚠️ 安全警告:MySQL 是高危服务,切勿将端口 3306 对全网 (
0.0.0.0/0) 开放,否则极易遭受暴力破解攻击。
5. 验证与连接
容器启动后,可以通过以下方式验证是否成功:
# 查看容器状态
docker ps
# 查看日志(确认无报错)
docker logs mysql8
# 进入容器内部测试连接
docker exec -it mysql8 mysql -uroot -pyour_strong_password
如果看到 mysql> 提示符,说明安装成功。此时你可以尝试从本地客户端(如 Navicat, DBeaver)连接:
- Host: 京东云实例的公网 IP(如果在安全组中已放行)
- Port: 3306
- User: root
- Password: 你在启动时设置的密码
常见问题排查
- 权限拒绝 (Access denied):检查安全组是否放行了 3306 端口,或者检查密码是否正确。
- 字符集乱码:上述 Compose 配置中已包含
utf8mb4相关参数,如果仍有问题,可手动修改配置文件/etc/my.cnf或启动参数。 - 容器启动失败:检查
docker logs mysql8输出,常见原因包括端口被占用、磁盘空间不足或数据目录权限错误。
CLOUD云枢