在阿里云 Docker 中管理 MySQL 8.0:常用命令与 Docker Compose 最佳实践

使用 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

相关推荐
七夜zippoe29 分钟前
Spring Boot 接通义千问:从拿 Key 到第一个对话接口跑通(保姆级)
java·spring boot·后端
SimonKing30 分钟前
别再花钱调 OCR 接口了!这个国产开源工具,免费还能离线跑
java·后端·程序员
Nebula_g30 分钟前
SpringBoot企业级实战项目—云禾外卖—SpringBoot常用注解解析
java·网络·数据库·spring boot·后端·spring·javase
晓得迷路了1 小时前
栗子前端技术周刊第 150 期 - Stack Overflow 开发者调查结果、TanStack Start 1.0...
javascript·css·后端
vx_Biye_Design1 小时前
PHP中医养生馆预约系统60841-计算机课程设计、毕业设计
vue.js·spring boot·后端·mysql·php·课程设计·express
IT_陈寒1 小时前
Vite性能优化完全指南
前端·人工智能·后端
黄鹂鸟科技2 小时前
软件定制开发设计要点:从需求梳理、原型确认到敏捷交付与持续维护
后端·物联网·系统架构
Profile排查笔记2 小时前
指纹浏览器 GitHub 项目怎么选?先看仓库交付的是工具、内核还是管理器
前端·人工智能·后端·自动化
高频因子挖掘机2 小时前
多股票行情为什么容易对不齐?用 Pandas MultiIndex 管理标的、日期与缺失值
后端·github·api
高频因子挖掘机2 小时前
Python 量化数据接口设计实战:用数据契约解决字段混乱与回测不一致
后端·github·api