阿里云服务器使用 Docker 部署 MySQL 8.0 完整指南(含加速器与安全配置)

1 阅读3分钟

一、前言

Docker 是目前最流行的容器化部署方式,使用 Docker 部署 MySQL 可以实现环境隔离、快速部署和数据持久化。本文针对阿里云服务器(Alibaba Cloud Linux 3),提供从 Docker 安装到 MySQL 安全配置的全流程,包含国内镜像加速和常见问题处理,适合有一定 Linux 基础的开发者阅读。

二、准备工作

  • 阿里云 ECS 实例(推荐 2核4G 及以上)
  • 系统为 Alibaba Cloud Linux 3(或其他 CentOS/RHEL 兼容系统)
  • 已获取 root 或具有 sudo 权限的用户
  • 阿里云控制台安全组权限

三、安装 Docker

Bash

# 1. 更新系统
sudo dnf update -y

# 2. 卸载旧版本(避免冲突)
sudo dnf remove -y docker docker-client docker-client-latest docker-common \
                  docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 3. 添加 Docker CE 官方源(阿里云镜像)
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4. 安装兼容插件
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus

# 5. 安装 Docker CE
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 6. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 7. 验证安装
docker --version
sudo systemctl status docker

四、配置国内镜像加速器(强烈推荐)

Bash

# 1. 创建配置文件
sudo mkdir -p /etc/docker

# 2. 配置加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://mirror.ccs.tencentyun.com"
  ]
}
EOF

# 3. 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

# 4. 验证配置
docker info | grep -A 10 "Registry Mirrors"

五、部署 MySQL 8.0

Bash

# 1. 创建数据持久化目录
mkdir -p ~/mysql-data

# 2. 启动 MySQL 容器(请将密码替换为自己的强密码)
docker run -d \
  --name mysql8 \
  --restart=always \
  -e MYSQL_ROOT_PASSWORD=YourStrongPassword123! \
  -p 3306:3306 \
  -v ~/mysql-data:/var/lib/mysql \
  --log-opt max-size=100m \
  mysql:8.0

密码建议:至少 12 位,包含大小写字母、数字和特殊符号。

六、验证 MySQL 运行状态

Bash

# 查看容器状态
docker ps

# 查看启动日志
docker logs mysql8

七、安全配置

  1. 设置 root 密码(如果环境变量未生效):

Bash

docker exec -it mysql8 mysql -u root -p

进入 MySQL 后执行:

SQL

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
FLUSH PRIVILEGES;
EXIT;
  1. 允许远程访问(测试环境):

SQL

CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

八、阿里云安全组配置

在阿里云控制台 → 实例详情 → 安全组 → 添加入方向规则:

  • 端口:3306
  • 授权对象:建议先使用特定 IP 测试,生产环境不要使用 0.0.0.0/0

九、本地连接测试

在本地 Mac/Windows 终端:

Bash

# 安装 MySQL 客户端(Mac 示例)
brew install mysql

# 测试连接(替换为你的服务器公网 IP)
mysql -h 你的服务器公网IP -P 3306 -u root -p

十、常见问题与解决

  • 拉取镜像超时:务必先配置 Docker 加速器。
  • root 密码为空:进入容器后手动执行 ALTER USER 语句。
  • 无法远程连接:检查安全组、防火墙(sudo firewall-cmd --add-port=3306/tcp --permanent)和用户权限。
  • 数据丢失:始终使用 -v 挂载卷持久化数据。