用 Docker 启动本地 MySQL 和 PostgreSQL 练习环境

用一份 Docker Compose 同时启动本地 MySQL 和 PostgreSQL,作为数据库学习与对照实验的最小练习环境。

#type / howto #status / growing #tech / dev / backend #resource / mysql #resource / postgresql

[!info] related notes

用 Docker 启动本地 MySQL 和 PostgreSQL 练习环境

目标

在同一台机器上同时启动一个 MySQL 和一个 PostgreSQL 实例,方便做 SQL 语法、建模和执行计划的对照实验。

前置条件

  • 已安装 Docker
  • 已安装 Docker Compose
  • 本机 3306 / 5432 端口没有冲突,或你愿意改端口

步骤

  1. 新建 docker-compose.yml
services:
  mysql:
    image: mysql:8.4
    container_name: tf-mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: playground
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql

  postgres:
    image: postgres:16
    container_name: tf-postgres
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: playground
    ports:
      - "5432:5432"
    volumes:
      - pg-data:/var/lib/postgresql/data

volumes:
  mysql-data:
  pg-data:
  1. 启动容器
docker compose up -d
  1. 检查状态
docker ps
  1. 进入容器测试连接
docker exec -it tf-mysql mysql -uroot -proot
docker exec -it tf-postgres psql -U postgres -d playground

验证

  • MySQL 中能执行 SHOW DATABASES;
  • PostgreSQL 中能执行 \l
  • 两边都能看到 playground 数据库

常见问题

  • 端口冲突:把宿主机端口改成 3307:33065433:5432
  • 容器反复重启:通常是环境变量不完整或数据卷残留旧状态
  • 学习场景下不要把 root / postgres 默认密码复制到长期环境中
创建于 2026/5/3 更新于 2026/5/27