走啊走
加油

京东云docker安装mysql8.0?

服务器价格表

在京东云(或任何基于 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。如果不配置,外部将无法连接数据库。

  1. 登录 京东云控制台
  2. 进入 云服务器 (ECS) -> 选择你的实例 -> 点击 安全组
  3. 找到该实例关联的安全组,点击 添加规则
  4. 填写如下信息:
    • 协议类型:TCP
    • 端口范围:3306
    • 授权对象0.0.0.0/0 (允许所有 IP,仅用于开发测试) 或指定你的本机 IP (如 192.168.x.x/32)。生产环境强烈建议仅允许特定 IP 访问。
  5. 保存规则。

验证与连接

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.ymlcommand 中添加 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  • 权限错误:如果是从低版本升级,可能需要初始化数据目录,确保 /opt/mysql/data 目录权限正确(建议 chown -R 999:999,因为 MySQL 镜像内默认以 uid 999 运行)。