【开箱即用】MySQL 8.0一分钟内部署

内容分享1个月前发布 DunLing
0 0 0

下面给出一份“开箱即用”的 Docker-Compose 模板,可在一分钟内拉起 MySQL 8.0,并附带:

  • 数据持久化
  • 自定义 my.cnf(字符集、时区、慢日志等)
  • 自定义网络,方便后续让其他服务(SQLREST、SpringBoot…)直接通过服务名 mysql8 访问
  • 健康检查
  • 可选的 phpMyAdmin 可视化管理

一、目录结构(推荐)

mysql-docker/
├── docker-compose.yml
├── conf.d/
│   └── my.cnf
└── data/          # 第一次会自动生成

二、docker-compose.yml

version: "3.9"

services:
  mysql8:
    image: mysql:8.0
    container_name: mysql8
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root123456          # root 密码
      MYSQL_DATABASE: demo_db                  # 初始化库
      MYSQL_USER: dev_user                     # 普通用户
      MYSQL_PASSWORD: dev_pass                 # 普通用户密码
    volumes:
      - ./data:/var/lib/mysql                  # 数据持久化
      - ./conf.d:/etc/mysql/conf.d             # 自定义配置
    networks:
      - mysql_net
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 3

  # 可选:phpMyAdmin
  pma:
    image: phpmyadmin/phpmyadmin
    container_name: pma
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: mysql8
      PMA_PORT: 3306
      PMA_USER: root
      PMA_PASSWORD: root123456
    depends_on:
      - mysql8
    networks:
      - mysql_net

networks:
  mysql_net:
    driver: bridge

三、自定义配置 conf.d/my.cnf(示例)

复制

[mysqld]
character-set-server      = utf8mb4
collation-server          = utf8mb4_unicode_ci
default_authentication_plugin = mysql_native_password
log_error                 = /var/lib/mysql/mysql-error.log
slow_query_log            = 1
slow_query_log_file       = /var/lib/mysql/mysql-slow.log
long_query_time           = 2

[client]
default-character-set     = utf8mb4

四、启动 & 验证

1.启动

docker compose up -d # 后台运行

2.查看状态

docker compose ps

docker logs mysql8 # 首次初始化稍等 10-20s

3.测试本地连接

docker exec -it mysql8 mysql -uroot -proot123456

4.远程连接

  • Host:宿主机 IP
  • Port:3306
  • 账号密码:见 environment 段

5.浏览器访问

http://宿主机IP:8080
用 root / root123456 登录即可

【开箱即用】MySQL 8.0一分钟内部署

五、维护命令

| 关闭并删除容器 | `docker compose down` |

| 仅停服务 | `docker compose stop` |

| 数据完全清空 | `docker compose down -v`(**会清空 ./data**) |

| 查看实时日志 | `docker compose logs -f` |

| 备份数据库 | `docker exec mysql8 mysqldump -uroot -proot123456 –all-databases > all.sql` |

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...