)
前言开发中经常遇到「同一台电脑需要运行 MySQL 5.7 和 MySQL 8.0」「同一版本需要多个实例隔离项目数据」的场景手动配置多个 MySQL 服务繁琐且易出错。本文详细讲解多实例配置、服务注册、一键启动脚本适配 Windows 10/11 系统全程实操复制即可落地。一、前置准备必做1. 下载 MySQL 安装包支持两种场景同一版本多实例如 MySQL 8.0 启动 3306、3307 端口、不同版本多实例如 MySQL 5.7 MySQL 8.0下载地址MySQL 5.7MySQL 5.7 官方下载选择 Windows (x86, 64-bit), ZIP ArchiveMySQL 8.0MySQL 8.0 官方下载选择 Windows (x86, 64-bit), ZIP Archive。2. 解压安装关键无中文、无空格路径以「MySQL 8.0 多实例3306、3307」为例解压步骤下载 MySQL 8.0 ZIP 包解压到 D:\MySQL 目录重命名为 MySQL-8.0-3306格式MySQL-版本-端口号便于区分复制 MySQL-8.0-3306 文件夹重命名为MySQL-8.0-3307对应 3307 端口实例若需添加 MySQL 5.7 实例解压 MySQL 5.7 ZIP 包重命名为MySQL-5.7-3308放在同一目录下即可。3. 环境变量配置可选方便命令行操作将每个 MySQL 实例的 bin 目录添加到系统环境变量以 3306 实例为例右键「此电脑」→「属性」→「高级系统设置」→「环境变量」在「系统变量」中找到「Path」点击「编辑」→「新建」添加 D:\MySQL\MySQL-8.0-3306\bin重复操作添加 3307、3308 实例的 bin 目录若无需命令行操作可跳过此步骤。二、配置多个 MySQL 实例核心步骤每个 MySQL 实例需要「独立的配置文件、数据目录、端口号」以 MySQL 8.0 3306、3307 实例为例步骤如下1. 配置 3306 实例默认端口进入 D:\MySQL\MySQL-8.0-3306 目录新建「my.ini」配置文件右键 → 新建文本文档 → 重命名为 my.ini编辑 my.ini粘贴以下配置修改路径为你的实际路径[mysqld]# 端口号唯一3306 为默认端口port3306# MySQL 安装目录你的 3306 实例解压路径basedirD:\MySQL\MySQL-8.0-3306# 数据目录自动生成无需手动创建datadirD:\MySQL\MySQL-8.0-3306\data# 服务名称唯一建议格式MySQL端口号service-nameMySQL3306# 字符集默认 utf8mb4支持表情符号character-set-serverutf8mb4# collationcollation-serverutf8mb4_general_ci# 跳过密码登录初始化时使用后续可修改密码skip-grant-tables# 禁用 SSL本地开发可禁用生产环境启用skip-ssl# 允许远程连接本地开发可开启bind-address0.0.0.02. 配置 3307 实例多端口进入 D:\MySQL\MySQL-8.0-3307 目录新建 my.ini 文件粘贴以下配置仅修改端口、路径、服务名称[mysqld]# 端口号3307与 3306 区分port3307# MySQL 安装目录3307 实例路径basedirD:\MySQL\MySQL-8.0-3307# 数据目录自动生成datadirD:\MySQL\MySQL-8.0-3307\data# 服务名称唯一MySQL3307service-nameMySQL3307# 其余配置与 3306 实例一致character-set-serverutf8mb4 collation-serverutf8mb4_general_ci skip-grant-tables skip-ssl bind-address0.0.0.03. 初始化每个实例关键避免启动失败每个实例需单独初始化生成数据目录和临时密码步骤如下以 3306 实例为例以「管理员身份」打开 CMD 命令行切换到 3306 实例的 bin 目录cd D:\MySQL\MySQL-8.0-3306\bin执行初始化命令生成数据目录和临时密码记录临时密码后续登录用mysqld --initialize --console初始化成功后会显示「A temporary password is generated for rootlocalhost: 临时密码」如hQ*2k1#z8LzR复制保存重复以上步骤分别初始化 3307 实例切换到 3307 实例的 bin 目录执行相同初始化命令。三、注册 MySQL 服务开机可自动启动可选将每个实例注册为 Windows 服务可通过「服务」面板手动启动/停止也可设置开机自启步骤如下管理员身份打开 CMD切换到 3306 实例的 bin 目录执行注册服务命令服务名称与 my.ini 中一致不可重复mysqld --install MySQL3306 --defaults-file“D:\MySQL\MySQL-8.0-3306\my.ini”提示「Service successfully installed」即注册成功重复操作注册 3307 实例cd D:\MySQL\MySQL-8.0-3307\binmysqld --install MySQL3307 --defaults-file“D:\MySQL\MySQL-8.0-3307\my.ini”提示若需删除服务执行命令 sc delete 服务名称如sc delete MySQL3307四、手动启动测试验证配置注册服务后可通过两种方式启动实例验证配置是否正确方式 1通过服务面板启动按下 Win R输入 services.msc打开「服务」面板找到「MySQL3306」「MySQL3307」服务右键 →「启动」启动成功后服务状态显示「正在运行」若启动失败查看事件查看器排查错误一般是配置文件路径错误或端口被占用。方式 2命令行启动# 启动 3306 服务net start MySQL3306# 启动 3307 服务net start MySQL3307# 停止服务如需net stop MySQL3306 net stop MySQL33073. 登录测试确认实例可正常访问启动实例后登录 MySQL 验证以 3306 实例为例mysql-uroot-P3306-p输入初始化时记录的临时密码登录成功后建议修改密码避免临时密码过期-- 修改 root 密码新密码可自定义如123456 ALTERUSERrootlocalhostIDENTIFIED BY123456;-- 刷新权限 FLUSH PRIVILEGES;3307 实例登录同理执行 mysql -u root -P 3307 -p 即可。五、一键批量启动/停止 MySQL 服务脚本优化若注册了 Windows 服务编写批处理脚本可一键启动/停止所有 MySQL 实例步骤如下1. 一键启动脚本start-all-mysql.bat新建文本文档重命名为start-all-mysql.bat编辑脚本粘贴以下代码服务名称与注册时一致echo offechoecho开始启动所有 MySQL 服务...echo:: 启动3306服务 net start MySQL3306if%errorlevel% equ0(echo MySQL3306 服务启动成功)else(echo MySQL3306 服务启动失败请检查配置):: 启动3307服务 net start MySQL3307if%errorlevel% equ0(echo MySQL3307 服务启动成功)else(echo MySQL3307 服务启动失败请检查配置):: 若有其他实例如3308添加以下代码 :: net start MySQL3308 ::if%errorlevel% equ0(echo MySQL3308 服务启动成功)else(echo MySQL3308 服务启动失败请检查配置)echoecho所有 MySQL 服务启动完成echopause2. 一键停止脚本stop-all-mysql.bat新建文本文档重命名为 stop-all-mysql.bat编辑脚本粘贴以下代码echo offechoecho开始停止所有 MySQL 服务...echo:: 停止3307服务 net stop MySQL3307if%errorlevel% equ0(echo MySQL3307 服务停止成功)else(echo MySQL3307 服务停止失败请检查服务状态):: 停止3306服务 net stop MySQL3306if%errorlevel% equ0(echo MySQL3306 服务停止成功)else(echo MySQL3306 服务停止失败请检查服务状态):: 若有其他实例添加以下代码 :: net stop MySQL3308 ::if%errorlevel% equ0(echo MySQL3308 服务停止成功)else(echo MySQL3308 服务停止失败请检查服务状态)echoecho所有 MySQL 服务停止完成echopause六、常见问题排查避坑必看服务启动失败提示「系统错误 1067」检查 my.ini 配置文件路径是否正确、数据目录是否生成未生成则重新初始化、端口是否被占用。登录失败提示「Access denied」确认临时密码输入正确若忘记临时密码删除 data 目录重新执行初始化命令生成新的临时密码。不同版本实例冲突确保每个实例的 port、service-name、datadir 均唯一避免路径重复。脚本启动失败以「管理员身份」运行脚本同时确认服务名称与脚本中一致。总结Windows 下启动多个 MySQL 服务核心是「独立配置、独立服务、独立端口」通过注册服务 批处理脚本可实现一键启动/停止适配多项目、多版本开发场景新手可直接复制配置和脚本按需修改路径即可使用。补充若无需开机自启可不用注册服务直接通过命令行启动切换到对应 bin 目录执行 mysqld --defaults-file“my.ini”但需保持命令行窗口开启关闭窗口即停止服务。