京东云docker安装mysql8.0?

在京东云(或任何基于 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,必须登录 京东云控制台 进行配置:

  1. 进入实例详情页,找到 安全组 标签页。
  2. 编辑当前实例绑定的安全组规则。
  3. 添加一条 入方向 规则:
    • 协议类型:TCP
    • 端口范围:3306
    • 授权对象
      • 若仅允许本机访问:填 127.0.0.1/32localhost
      • 若需远程开发:填你本地的公网 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云枢 » 京东云docker安装mysql8.0?