使用 Docker 部署 MySQL 后,掌握常用运维命令和 Docker Compose 管理方式,能极大提升开发和运维效率。
本文整理了从基础容器操作到 Docker Compose 完整配置的实用内容,适合已完成 Docker + MySQL 基础部署的开发者参考。
1. Docker 容器基础操作
Bash
bash
# 查看正在运行的容器
docker ps
# 查看 MySQL 容器日志
docker logs mysql8
docker logs -f mysql8 # 实时跟踪日志
# 停止、启动、重启容器
docker stop mysql8
docker start mysql8
docker restart mysql8
# 删除容器(数据卷不会丢失)
docker rm -f mysql8
2. 进入 MySQL 容器
Bash
bash
# 以 root 用户进入
docker exec -it mysql8 mysql -u root -p
# 以普通应用用户进入(示例)
docker exec -it mysql8 mysql -u myblog -p
常用 SQL 操作示例:
SQL
sql
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库(推荐 utf8mb4 编码)
CREATE DATABASE myproject
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 创建应用用户并授权
CREATE USER 'appuser'@'%' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON myproject.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
-- 查看用户权限
SHOW GRANTS FOR 'appuser'@'%';
3. 数据备份与恢复
Bash
bash
# 备份单个数据库
docker exec mysql8 mysqldump -u root -p myblog > ~/backup/myblog_$(date +%Y%m%d).sql
# 备份所有数据库
docker exec mysql8 mysqldump -u root -p --all-databases > ~/backup/all_$(date +%Y%m%d).sql
# 恢复数据库
docker exec -i mysql8 mysql -u root -p myblog < ~/backup/myblog_20250513.sql
4. 安装 Docker Compose
Bash
bash
# 检查是否已安装
docker compose version
# 安装 Docker Compose 插件
sudo dnf install -y docker-compose-plugin
5. 使用 Docker Compose 部署 MySQL(推荐方式)
5.1 创建项目目录和配置文件
Bash
bash
# 创建专用目录
mkdir -p ~/mysql-docker && cd ~/mysql-docker
# 创建 .env 文件(推荐分离敏感信息)
cat > .env << 'EOF'
MYSQL_ROOT_PASSWORD=YourStrongPassword123!
MYSQL_DATABASE=myblog
MYSQL_USER=myblog
MYSQL_PASSWORD=YourAppPassword123!
TZ=Asia/Shanghai
EOF
# 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.9'
services:
mysql:
image: mysql:8.0
container_name: mysql8
restart: always
env_file:
- .env
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-authentication-plugin=mysql_native_password
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]
interval: 10s
timeout: 5s
retries: 5
volumes:
mysql-data:
EOF
5.2 常用 Docker Compose 命令
Bash
bash
# 启动服务
docker compose up -d
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f mysql
# 停止服务
docker compose down
# 重启服务
docker compose restart
# 进入 MySQL
docker compose exec mysql mysql -u root -p
# 更新镜像并重启
docker compose pull
docker compose up -d
处理旧容器冲突(如果之前用 docker run 创建过同名容器):
Bash
bash
# 停止并删除旧容器(数据卷保留)
docker stop mysql8
docker rm mysql8
# 使用 Compose 启动
docker compose up -d
6. 快捷命令推荐(可选)
将以下内容添加到 ~/.bashrc 或 ~/.zshrc:
Bash
ini
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcl='docker compose logs -f'
alias dce='docker compose exec'
重新加载配置:source ~/.bashrc