用 Docker 启动本地 MySQL 和 PostgreSQL 练习环境
用一份 Docker Compose 同时启动本地 MySQL 和 PostgreSQL,作为数据库学习与对照实验的最小练习环境。
#type / howto
#status / growing
#tech / dev / backend
#resource / mysql
#resource / postgresql
[!info] related notes
- 前置笔记: MySQL, PostgreSQL
- 相关 MOC: 数据库 MOC
- 相关资源: Docker 创建开发/测试数据库
用 Docker 启动本地 MySQL 和 PostgreSQL 练习环境
目标
在同一台机器上同时启动一个 MySQL 和一个 PostgreSQL 实例,方便做 SQL 语法、建模和执行计划的对照实验。
前置条件
- 已安装 Docker
- 已安装 Docker Compose
- 本机 3306 / 5432 端口没有冲突,或你愿意改端口
步骤
- 新建
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:
- 启动容器
docker compose up -d
- 检查状态
docker ps
- 进入容器测试连接
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:3306或5433:5432 - 容器反复重启:通常是环境变量不完整或数据卷残留旧状态
- 学习场景下不要把 root / postgres 默认密码复制到长期环境中