Windows 下 MySQL 多实例部署指南

Nora
Nora
发布时间:2026-10-16| 5人浏览过
原创

在一台 Windows 服务器或本地开发机上同时运行多个 MySQL 实例,能有效实现项目间的数据库环境隔离。其核心原理是通过不同的配置文件(.ini)和独立的端口号,让多个 mysqld 进程指向各自专属的数据目录(datadir)。本文将详细介绍在基于 PHPStudy 的 Windows 环境下,从零开始部署第二个 MySQL 实例的具体操作。

部署目标与准备

本操作的最终目标是:在原 MySQL 实例(假设端口为 3306)的基础上,成功启动一个监听新端口(如 3308)的新实例。该新实例拥有独立的数据存储路径、日志路径和服务名称,互不干扰。

第一步:复制并修改配置文件

MySQL 的多实例运行依赖于不同的配置文件。我们需要复制一份现有的 my.ini 文件作为新实例的基础。

  1. 入口:进入 MySQL 的安装配置目录,例如 D:/phpstudy_pro/Extensions/MySQL5.7.26/。
  2. 动作:将主配置文件 my.ini 复制一份,重命名为 my_dev.ini(或其他易识别的名称)。
  3. 参数修改:使用文本编辑器打开 my_dev.ini,重点修改以下关键参数:
[mysqld]
# 设置新实例独有的端口,需避开正在使用的默认端口3306
port=3308
# 指定新的根目录路径(可复用原安装目录)
basedir=D:/phpstudy_pro/Extensions/MySQL5.7.26/
# 【关键】指定全新的数据存放目录,严禁与原实例共用
# 若原实例数据在 MySQL5.7.26/data/,此处需新建 data_dev/
datadir=D:/phpstudy_pro/Extensions/MySQL5.7.26/data_dev/
# 错误日志输出路径
log-error="D:/phpstudy_pro/Extensions/MySQL5.7.26/data_dev/err.log"

# 临时跳过权限表检查以便首次初始化后重置密码
skip-grant-tables

[client]
port=3308

第二步:创建独立数据目录

每个 MySQL 实例必须拥有物理隔离的数据文件夹。请进入 data_dev 所在目录,确保文件夹已创建且内部为空。

  • 注意:datadir 对应的文件夹不能包含任何文件,否则会导致初始化失败或实例无法启动。

第三步:初始化实例数据

在新的数据目录下初始化数据库结构。打开命令提示符(CMD),输入以下指令执行初始化:

mysqld --initialize-insecure --user=mysql --datadir=D:\\phpstudy_pro\\Extensions\\MySQL5.7.26\\data_dev --basedir=D:\\phpstudy_pro\\Extensions\\MySQL5.7.26

说明:使用 --initialize-insecure 会生成不带初始密码的 root 账户(允许空密码登录),方便后续测试。如果生产环境建议严格安全控制,可省略 insecure 参数并记录生成的随机密码。

第四步:注册 Windows 服务

为了让 MySQL 随系统启动或便于管理,需要将新实例注册为 Windows 服务。

mysqld install MySQL_DEV --defaults-file="D:\\phpstudy_pro\\Extensions\\MySQL5.7.26\\my_dev.ini"

执行成功后,可在“服务”管理器中看到名为 MySQL_DEV 的新服务项。

第五步:重置密码与安全配置

由于上一步配置了 skip-grant-tables,此时直接连接无需密码,但也存在安全隐患。请按以下步骤规范操作:

  1. 登录新实例:
mysql -u root -P 3308
  1. 切换数据库并更新密码:
use mysql;
-- 针对 MySQL 5.7 及以下版本使用 password() 函数
update user set password=password("新密码") where user="root";
-- 若 update 报错,尝试新版语法:
-- update user set authentication_string=password("新密码") where user="root";
  1. 刷新权限:
flush privileges;

第六步:恢复安全限制并重启

密码设置完成后,必须移除配置文件中的 skip-grant-tables 行,否则系统将完全失去身份验证保护。

  1. 编辑 my_dev.ini 文件,删除或注释掉 skip-grant-tables。
  2. 重启服务:
sc stop MySQL_DEV
sc start MySQL_DEV

第七步:开启远程访问(可选)

若需从其他电脑连接此新实例,需在数据库中修改 user 表的 host 字段为 %:

mysql -u root -P 3308 -p
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
quit;

完成状态判断

部署完成后,可通过以下方式验证:

  • 查看 Windows 服务管理器,确认 MySQL_DEV 服务状态为“正在运行”。
  • 使用客户端工具连接 IP 地址的 3308 端口,若能使用设置的密码正常登录,即表示多实例部署成功。

常见问题排查

  • 服务启动失败(退出代码 1067):通常是因为 datadir 目录中存在残留文件或权限不足。请清空 data_dev 文件夹并重试初始化步骤,或检查文件夹是否具有当前用户的读写权限。
  • 端口冲突:确保 [mysqld] 中配置的 port 未被其他程序占用。

以上就是 Windows 下 MySQL 多实例部署的详细内容,更多关于 MySQL 多实例配置的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。