在京东云(或其他任何云服务器)上通过 Docker 安装 MySQL 8.0,通常分为准备环境、拉取镜像、启动容器以及验证连接四个步骤。
以下是完整的操作指南:
1. 登录服务器并准备环境
首先通过 SSH 登录到京东云的 ECS 实例。确保你的服务器已经安装了 Docker 和 Docker Compose(可选,但推荐)。
如果尚未安装 Docker,可以使用以下命令快速安装(以 Ubuntu/Debian 为例):
# 更新软件包索引
sudo apt-get update
# 安装依赖项
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
注:如果是 CentOS/Alibaba Cloud Linux,请使用 yum 或 dnf 安装方式。
2. 创建数据目录与配置文件
为了数据安全,建议将数据持久化挂载到宿主机,而不是存储在容器内部。
# 创建存放数据的目录
mkdir -p /opt/mysql/data
mkdir -p /opt/mysql/conf
# 赋予当前用户权限(防止权限问题)
chmod -R 777 /opt/mysql
注意:生产环境中建议不要使用
777,而是根据运行用户调整权限(如chown -R mysql:mysql),此处为了演示方便暂用 777。
3. 启动 MySQL 8.0 容器
我们可以直接使用 docker run 命令一键启动,或者使用 docker-compose.yml 管理。这里提供最常用的 docker run 方式,参数包含根密码、时区等关键配置。
执行以下命令:
docker run -d
--name mysql8
-e MYSQL_ROOT_PASSWORD=your_strong_password_here
-e TZ=Asia/Shanghai
-p 3306:3306
-v /opt/mysql/data:/var/lib/mysql
-v /opt/mysql/conf:/etc/mysql/conf.d
--restart always
mysql:8.0
参数说明:
--name mysql8: 容器名称。-e MYSQL_ROOT_PASSWORD=...: 必须修改为你自己的强密码(MySQL 8.0 强制要求)。-e TZ=Asia/Shanghai: 设置时区为上海时间。-p 3306:3306: 将宿主机的 3306 端口映射到容器,用于外部访问。-v ...: 数据卷挂载,确保重启后数据不丢失。mysql:8.0: 指定拉取 MySQL 8.0 的官方镜像。
4. 关键步骤:配置京东云安全组
这是最容易出错的一步。 默认情况下,京东云的安全组会拦截所有入站流量。你必须手动放行端口,否则本地无法连接数据库。
- 登录 京东云控制台。
- 进入 云服务器 (ECS) -> 找到你的实例 -> 点击 更多 -> 网络与安全 -> 安全组。
- 点击该安全组的 规则列表,选择 入方向 -> 添加入站规则。
- 配置如下:
- 协议类型: TCP
- 端口范围:
3306(或者填写3306/3306) - 授权对象:
0.0.0.0/0(允许所有 IP 访问,生产环境建议限制为你的特定 IP) - 优先级: 保持默认
- 保存规则。
5. 验证安装是否成功
检查容器状态
docker ps
查看是否有名为 mysql8 且状态为 Up 的容器。
进入容器测试
docker exec -it mysql8 mysql -u root -p
输入你在第 3 步设置的密码。如果能进入 mysql> 提示符,说明安装成功。
远程连接测试
在你的本地电脑(Windows/Mac/Linux)使用 Navicat、DBeaver 或命令行连接:
- Host: 京东云公网 IP
- Port: 3306
- User: root
- Password: 你设置的密码
💡 常见问题与优化建议
-
关于 MySQL 8.0 的认证插件:
MySQL 8.0 默认使用caching_sha2_password加密插件。如果你使用的是较旧的客户端工具(如旧版 Navicat 或某些语言驱动),可能会报错Plugin caching_sha2_password could not be loaded。- 解决方法:创建一个自定义配置文件
/opt/mysql/conf/my.cnf,内容如下,然后重启容器即可兼容旧客户端:[mysqld] default_authentication_plugin=mysql_native_password
- 解决方法:创建一个自定义配置文件
-
安全性建议:
- 不要在安全组中随意开放
0.0.0.0/0,最好只开放你办公电脑的 IP 地址。 - 定期备份
/opt/mysql/data目录。
- 不要在安全组中随意开放
-
如何查看日志:
如果启动失败,可以通过以下命令查看错误原因:docker logs mysql8
云服务器