Windows下安装两个MySQL:从零开始的完整实操教程
在Windows电脑上同时跑两个MySQL,是很多开发、测试和运维场景的刚需。比如一个跑MySQL 5.7兼容旧项目,另一个跑MySQL 8.0体验新特性;或者两个实例分别服务不同项目,端口、数据完全隔离,互不干扰。官方安装包默认只装一个服务,直接重复安装会冲突。下面用最稳妥的方式,一步步教你把两个MySQL装好并跑起来,全程适合电脑小白,每一步都写清楚,照着做就能成功。
为什么要装两个MySQL
单一实例虽然简单,但遇到版本冲突、端口占用、数据隔离需求时就很麻烦。两个实例可以:
- 用不同端口(默认3306改成3307、3308)
- 用不同数据目录,备份互不影响
- 注册成不同Windows服务名,开机自启可控
- 方便切换版本做兼容测试
整个过程免费,只需要官方安装包,不花额外钱。
准备工作(5分钟搞定)
- 确认系统:Windows 10/11 64位最稳,内存建议8GB以上。
- 下载MySQL:
- 去MySQL官网下载页面,分别下两个版本(推荐一个5.7一个8.0,或者两个8.0)。
- 选Windows (x86, 64-bit), MSI Installer(约300MB)。
- 也可以下ZIP Archive(免安装版),后面会说更灵活。
- 关闭杀毒软件和防火墙临时拦截(装完再开)。
- 准备两个文件夹:例如
D:\MySQL57和D:\MySQL80,用来放安装文件和数据,避免C盘占满。 - 记下管理员密码,后面要用。
方法一:用官方MSI安装两个实例(新手首选,图形界面)
先装第一个(默认3306),再自定义装第二个。
第一步:安装第一个MySQL(正常安装)
- 双击下载的MSI文件,选“Custom”自定义安装。
- 安装路径改成
D:\MySQL57,数据目录默认即可(或改成D:\MySQL57\data)。 - 下一步选“Server only”,继续。
- 配置类型选“Development Computer”。
- 端口保持3306,勾选“Open Windows Firewall ports”。
- 设置root密码(强密码,写下来!)。
- Windows服务名用默认MySQL57或MySQL80(记住它)。
- 完成安装,启动服务。
测试:打开命令提示符(管理员),输入:
mysql -u root -p
输入密码能进就成功。
第二步:安装第二个MySQL(关键,改端口和服务名)
- 再双击另一个版本的MSI(或同一个再装一次)。
- 同样选Custom,路径改成
D:\MySQL80。 - 数据目录改成
D:\MySQL80\data(必须不同!)。 - 配置时端口改成3307(或其他空闲端口,别用3306)。
- Windows服务名改成MySQL80(绝对不能重复)。
- root密码可以一样,也可以不同。
- 完成安装。
这时候Windows服务里会有两个:MySQL57(3306)和MySQL80(3307)。
方法二:用ZIP包安装(进阶,更干净,推荐有经验的用户)
MSI有时会残留注册表,ZIP版更纯净,适合多版本。
- 下载ZIP Archive,解压到
D:\MySQL57和D:\MySQL80。 - 在每个目录下新建my.ini文件(用记事本,另存为ANSI编码)。
第一个实例 my.ini 示例(D:\MySQL57\my.ini):
[mysqld]
port=3306
basedir=D:/MySQL57
datadir=D:/MySQL57/data
character-set-server=utf8mb4
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
port=3306
default-character-set=utf8mb4
第二个实例 my.ini(D:\MySQL80\my.ini):
[mysqld]
port=3307
basedir=D:/MySQL80
datadir=D:/MySQL80/data
character-set-server=utf8mb4
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
port=3307
default-character-set=utf8mb4
注意路径用正斜杠/,端口不同,数据目录不同。
- 初始化数据目录(管理员命令提示符):
cd /d D:\MySQL57\bin mysqld --initialize-insecure --console(会生成临时root无密码,或加--initialize生成随机密码看控制台)
同样对第二个目录操作,端口3307的也初始化一次。
- 安装Windows服务:
cd /d D:\MySQL57\bin mysqld --install MySQL57 --defaults-file=D:\MySQL57\my.ini
cd /d D:\MySQL80\bin
mysqld --install MySQL80 --defaults-file=D:\MySQL80\my.ini
- 启动服务:
net start MySQL57 net start MySQL80
测试两个实例是否正常
-
连接第一个:
mysql -u root -p -P3306 -h127.0.0.1 -
连接第二个:
mysql -u root -p -P3307 -h127.0.0.1 -
在服务管理器(services.msc)里看两个服务都是“正在运行”。
-
用Navicat、DBeaver或WorkBench分别新建连接,端口对应即可。
常见问题与避坑
- 端口被占用:用
netstat -ano | findstr 3306查,改掉冲突程序。 - 服务启动失败:看错误日志(data目录下的.err文件),常见是路径写错或权限不够。
- 中文乱码:my.ini里加character-set-server=utf8mb4,重启服务。
- 忘记密码:停服务,用
--skip-grant-tables启动临时改密码。 - 开机自启:服务属性里设为“自动”。
- 卸载干净:停服务 → 删除服务(sc delete MySQL57)→ 删文件夹 → 清注册表MySQL项。
进阶优化建议
- 两个实例都加 innodb_buffer_pool_size(根据内存分,比如各1-2GB)。
- 防火墙只开需要的端口。
- 定期备份:用mysqldump分别备份两个数据目录。
- 性能监控:装Percona Toolkit或用Windows性能监视器看CPU/内存。
- 如果只是临时测试,用Docker跑多个MySQL容器更省事,但本教程专注原生安装。
按上面步骤做完,你的Windows上就有两个独立的MySQL了。端口隔离、数据分离、服务独立,日常开发完全够用。记住每次改配置后一定重启对应服务,路径和端口千万别写错。
文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

还没有评论,来说两句吧...