一、前言
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
七、安全配置
- 设置 root 密码(如果环境变量未生效):
Bash
docker exec -it mysql8 mysql -u root -p
进入 MySQL 后执行:
SQL
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
FLUSH PRIVILEGES;
EXIT;
- 允许远程访问(测试环境):
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 挂载卷持久化数据。