
在一台机器上安装多个版本的 MySQL 是可行的,但需要合理配置避免端口、数据目录和服务冲突。以下是具体操作方法,适用于 linux 和 windows 系统。
1. 使用不同端口和数据目录
每个 MySQL 实例必须使用独立的端口和数据目录,防止服务之间互相干扰。
- 默认 MySQL 使用 3306 端口,第二个实例可使用 3307、3308 等
- – MySQL 5.7: /var/lib/mysql57
– MySQL 8.0: /var/lib/mysql80 - 配置文件 my.cnf(或 my.ini)中明确指定 port 和 datadir
2. 安装方式建议:使用二进制包或官方仓库
推荐通过二进制压缩包或官方 APT/YUM 仓库安装多版本,便于管理。
- Linux 上可通过添加 MySQL 官方 repo,启用多个版本源
- 下载对应版本的 tar 包解压到不同目录,如:
– /usr/local/mysql-5.7
– /usr/local/mysql-8.0 - 分别初始化每个实例:
mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/var/lib/mysql57
3. 配置多个服务名(Linux systemd 或 windows 服务)
为每个版本注册独立的服务名称,避免启动冲突。
- Linux 可创建不同的 systemd 服务文件,如 mysql57.service 和 mysql80.service
- Windows 使用命令安装服务:
mysqld --install MySQL57 --defaults-file="C:my57.cnf"mysqld --install MySQL80 --defaults-file="C:my80.cnf" - 每个服务指向各自的配置文件
4. 使用 Docker 更简便地运行多版本
Docker 是最简单的方式,无需修改系统环境。
- 运行 MySQL 5.7:
- 运行 MySQL 8.0:
- 通过不同主机端口映射访问不同版本
docker run -d -p 3306:3306 --name mysql57 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker run -d -p 3307:3306 --name mysql80 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
基本上就这些。关键是隔离端口、数据目录和服务名。用 Docker 最省事,本地编译安装更灵活但需手动管理。


