ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

多实例MySQL服务配置指南

多实例MySQL服务配置指南

我们在安装MySQL的时候会有处让我们选择服务名的地方,这个尽量取唯一值。因为这个服务会写入到注册表,严格上不允许出现相同的服务。

但是小皮的默认服务名一直是MySQL导致如果还安装了其他的MySQL服务就会导致启动异常,小皮永远无法运行这个MySQL,因为服务名被原本安装的MySQL占用了。

我的计划是让服务名各自唯一,端口可以保持相同,因为我只需要解决小皮数据库无法启动这个问题就行,不需要让它们同时运行。所以每当我使用小皮的时候手动关闭掉MySQL80的服务释放3306端口即可。要是想要电脑/服务器上同时运行多个MySQL的话就也需要再更改不同的端口号。

在Windows上配置多个MySQL服务,核心在于为每个实例指定唯一的服务名、端口和数据目录。以下是具体配置步骤。

1. 准备工作:目录与文件结构

假设要安装两个MySQL实例(MySQL8.0 和 MySQL5.7),建议采用如下目录结构:

D:\mysql\ ├── mysql8.0\ # MySQL 8.0 安装目录 │ ├── bin\ │ ├── data\ # 8.0 数据目录(需初始化生成) │ └── my.ini # 8.0 配置文件 └── mysql-5.7\ # MySQL 5.7 安装目录 ├── bin\ ├── data\ # 5.7 数据目录(需初始化生成) └── my.ini # 5.7 配置文件

2. 配置文件 (my.ini) 定制

每个实例必须有独立的配置文件。关键配置项对比如下:

配置项实例一 (MySQL8.0)实例二 (MySQL5.7)说明
服务名MySQL80MySQL57必须唯一,用于Windows服务管理
端口33063307必须唯一,避免端口冲突
安装目录D:\mysql\mysql-8.0D:\mysql\mysql-5.7解压或安装的根目录
数据目录D:\mysql\mysql-8.0\dataD:\mysql\mysql-5.7\data存放数据库文件的位置
Socket文件mysql80.sockmysql57.sock(可选) 用于本地连接,避免冲突

MySQL 8.0 的my.ini示例:

[mysqld] # 服务设置 port=3306 server-id=1 # 目录设置 basedir=D:\mysql\mysql-8.0 datadir=D:\mysql\mysql-8.0\data # 服务名 (关键!) service_name=MySQL80 # 字符集 character-set-server=utf8mb4 collation-server=utf8mb4_0900_ai_ci [mysql] default-character-set=utf8mb4 [client] port=3306 default-character-set=utf8mb4

MySQL 5.7 的my.ini示例:

[mysqld] # 服务设置 port=3307 server-id=2 # 目录设置 basedir=D:\mysql\mysql-5.7 datadir=D:\mysql\mysql-5.7\data # 服务名 (关键!) service_name=MySQL57 # 字符集 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci [mysql] default-character-set=utf8mb4 [client] port=3307 default-character-set=utf8mb4

3. 初始化数据目录并安装服务

管理员身份打开命令提示符(CMD)或 PowerShell,分别进入各MySQL的bin目录执行命令。

步骤1:初始化数据目录

# 进入 MySQL 8.0 的 bin 目录 cd /d D:\mysql\mysql-8.0\bin # 执行初始化,生成 root 用户的初始密码(注意保存) mysqld --defaults-file=D:\mysql\mysql-8.0\my.ini --initialize-insecure
  • --initialize-insecure参数会生成空密码的root账户,适合测试。生产环境建议使用--initialize生成随机密码。

步骤2:安装并启动服务

# 安装 MySQL80 服务,并指定配置文件 mysqld --install MySQL80 --defaults-file=D:\mysql\mysql-8.0\my.ini # 启动服务 net start MySQL80

对MySQL 5.7实例,重复上述步骤,但需更换路径和服务名:

# 进入 MySQL 5.7 的 bin 目录 cd /d D:\mysql\mysql-5.7\bin # 初始化 mysqld --defaults-file=D:\mysql\mysql-5.7\my.ini --initialize-insecure # 安装 MySQL57 服务 mysqld --install MySQL57 --defaults-file=D:\mysql\mysql-5.7\my.ini # 启动服务 net start MySQL57

4. 连接与验证

使用指定端口连接对应的MySQL实例:

# 连接 MySQL 8.0 (端口3306) mysql -u root -P 3306 -p # 连接 MySQL 5.7 (端口3307) mysql -u root -P 3307 -p

5. 服务管理命令

安装后,可通过以下命令管理服务:

# 查看服务状态 sc query MySQL80 sc query MySQL57 # 停止服务 net stop MySQL80 net stop MySQL57 # 删除服务 (如需卸载) sc delete MySQL80 sc delete MySQL57

关键注意事项

  1. 管理员权限:所有安装、初始化、服务操作都必须在管理员命令行中进行。
  2. 端口与服务名唯一性:这是多实例共存的基础,务必确保不冲突。
  3. 配置文件路径:使用--defaults-file参数安装服务时,必须提供配置文件的绝对路径
  4. 数据目录权限:确保运行MySQL服务的账户(如NETWORK SERVICE)对data目录有完全控制权,否则会导致启动失败。

参考来源

  • window下一台PC机器上安装多个mysql的方法
  • windows 安装mysql(多个版本同时安装)
  • 【Mysql】window下Mysql安装两个版本- 5.6 和 8.0免安装版本及其配置
  • Windows下MySQL多实例运行
  • mysql 5.6 dev_Windows 7安装解压版MySQL 5.6(不包含配置文件优化)
返回列表