速卖通素材
努力

京东云docker安装mysql8.0?

服务器

在京东云(或任何基于 Linux 的云服务器)上通过 Docker 安装 MySQL 8.0,核心步骤与在其他云厂商上基本一致。以下是详细的操作指南,包含快速启动命令推荐的生产环境配置

前置准备

确保你的京东云实例已满足以下条件:

  1. 操作系统:推荐使用 CentOS 7+/Ubuntu 20.04+ / Debian 10+。
  2. 网络策略:登录京东云控制台,在安全组中放行 3306 端口(允许特定 IP 访问以提高安全性)。
  3. 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.08.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 端口。

第四步:验证安装

  1. 检查容器状态

    docker ps

    确认 my-mysqlmy-mysql-prod 状态为 Up

  2. 进入容器查看日志

    docker logs my-mysql-prod

    如果看到 ready for connections 字样,说明启动成功。

  3. 连接测试
    在本地电脑(或服务器内部)使用客户端工具(如 Navicat, DBeaver, 或命令行)连接:

    • Host: 京东云公网 IP(注意:如果是本地测试可用 127.0.0.1localhost
    • Port: 3306
    • User: root
    • Password: 你设置的密码

    命令行连接示例:

    # 需要先安装 mysql-client
    docker exec -it my-mysql-prod mysql -u root -p

⚠️ 京东云特别注意事项

  1. 安全组配置
    这是最容易忽略的一步。即使 Docker 端口映射了,如果京东云控制台的安全组规则没有添加 TCP 3306 的入站规则,外部无法连接。

    • 路径:京东云控制台 -> 弹性计算 -> 实例 -> 安全组 -> 添加入方向规则。
    • 协议:TCP,端口:3306,授权对象:建议填写你自己的办公 IP,不要填 0.0.0.0/0 以防被暴力破解。
  2. 性能优化
    数据库对 I/O 敏感。建议在京东云购买时选择SSD 云盘,并在挂载数据卷时使用高性能磁盘。

  3. 备份策略
    虽然使用了 -v 挂载,但建议定期在宿主机执行 mysqldump 或使用京东云提供的快照功能对云盘进行备份。

  4. 防火墙
    检查服务器内部的防火墙(如 firewalldufw)是否拦截了 3306 端口。

    • CentOS: systemctl stop firewalld (测试用) 或配置允许 3306。
    • Ubuntu: ufw allow 3306.

完成以上步骤后,你就成功在京东云上部署了 MySQL 8.0 了。

未经允许不得转载:轻量云Cloud » 京东云docker安装mysql8.0?