京东云docker安装mysql8.0?

在京东云(或任何基于 Linux 的云服务器)上通过 Docker 安装 MySQL 8.0,主要涉及拉取镜像、配置数据目录映射以及启动容器。以下是标准的操作步骤和关键注意事项。

1. 环境准备

确保你的京东云实例已经安装了 Docker 和 Docker Compose(可选,但推荐)。如果尚未安装,可以使用以下命令:

# 更新软件源
sudo yum update -y   # CentOS/RedHat
# 或
sudo apt update      # Ubuntu/Debian

# 安装 Docker (以 CentOS 为例)
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

2. 创建本地目录结构

为了数据安全,建议将 MySQL 的数据文件、配置文件和日志文件映射到宿主机目录,避免容器删除后数据丢失。

# 创建目录
mkdir -p /data/mysql8/data
mkdir -p /data/mysql8/conf
mkdir -p /data/mysql8/logs

# 设置权限(防止后续写入失败)
chmod -R 755 /data/mysql8

3. 编写 docker-compose.yml 文件

创建一个 docker-compose.yml 文件来定义服务。这是管理容器最便捷的方式。

version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: jingdong-mysql8
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'YourStrongPassword123!' # 请修改为强密码
      MYSQL_DATABASE: 'test_db'                    # 初始化时创建的数据库
      MYSQL_USER: 'app_user'                       # 自定义用户
      MYSQL_PASSWORD: 'AppUserPassword456'         # 自定义用户密码
    ports:
      - "3306:3306"                                # 暴露端口
    volumes:
      - /data/mysql8/data:/var/lib/mysql           # 数据持久化
      - /data/mysql8/conf:/etc/mysql/conf.d        # 自定义配置
      - /data/mysql8/logs:/logs                    # 日志挂载
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    networks:
      - my-network

networks:
  my-network:
    driver: bridge

关键参数说明:

  • MYSQL_ROOT_PASSWORD: 必须设置,否则容器无法启动。
  • command: 显式指定字符集为 utf8mb4 并启用 mysql_native_password 插件(兼容旧版客户端),这通常是生产环境的最佳实践。
  • volumes: 确保 /data/mysql8 路径下的数据不会随容器重启而丢失。

4. 启动容器

在包含 docker-compose.yml 的目录下执行:

docker compose up -d

(如果是较老版本的 Docker,使用 docker-compose up -d)

启动后,可以通过以下命令查看状态:

docker ps
docker logs jingdong-mysql8

5. 京东云安全组配置(至关重要)

Docker 内部端口已开放,但京东云的安全组(Security Group)默认会拦截外部访问。你需要登录京东云控制台进行配置:

  1. 进入京东云控制台 -> 网络与安全 -> 安全组
  2. 找到该实例绑定的安全组规则。
  3. 添加一条入方向(Inbound)规则:
    • 协议类型:TCP
    • 端口范围:3306
    • 授权对象0.0.0.0/0(允许所有 IP,仅用于测试)或指定特定 IP(生产环境建议限制)。
    • 优先级:1
  4. 保存规则。

⚠️ 安全警告:MySQL 数据库直接暴露在公网存在极大风险。生产环境中,建议仅允许应用服务器的内网 IP 访问,或者通过 SSH 隧道连接,不要将 0.0.0.0/0 长期开放给 3306 端口。

6. 验证与连接

在本地终端使用 MySQL 客户端连接测试:

mysql -h <京东云公网IP> -P 3306 -u root -p

输入你在 docker-compose.yml 中设置的 MYSQL_ROOT_PASSWORD。如果成功进入命令行界面,则安装完成。

常见问题排查

  • 连接被拒绝:首先检查京东云安全组是否放行了 3306 端口;其次检查容器是否正在运行 (docker ps)。
  • 权限错误 (Permission denied):通常是因为宿主机的 /data/mysql8 目录所有者不是当前运行 Docker 的用户。尝试执行 sudo chown -R 999:999 /data/mysql8(MySQL 容器内默认用户 ID 通常为 999)。
  • 时区问题:如果应用报错时区相关,可以在 command 中添加 --default-time-zone=+08:00
未经允许不得转载:云知识CLOUD » 京东云docker安装mysql8.0?