在 Windows 系统中安装多个 MySQL 版本的核心是 避免端口冲突、配置独立目录、注册独立服务,以下是详细的分步教程(以安装 MySQL 5.7 和 MySQL 8.0 为例,其他版本流程一致):
一、准备工作
-
下载对应版本的 MySQL 安装包
推荐下载 ZIP 免安装版 (无需卸载,配置灵活),官网地址:
MySQL 历史版本下载选择对应版本(如 5.7.42、8.0.42)、操作系统(Windows)、位数(x86_64),下载 ZIP 包。
-
环境要求
- 关闭已安装的 MySQL 服务(若有):cmd 中执行
net stop mysql(若服务名不同,需替换)。 - 确保端口不冲突(默认 3306,第二个版本需用 3307 等未占用端口)。
- 解压路径建议 无中文、无空格 (如
D:\tool\mysql\mysql-8.0.42、D:\tool\mysql\mysql-5.7.42`)。
- 关闭已安装的 MySQL 服务(若有):cmd 中执行
二、安装第一个 MySQL 版本(以 5.7 为例)
步骤 1:解压并创建配置文件
-
将 MySQL 5.7 的 ZIP 包解压到目标路径(如
D:\tool\mysql\mysql-5.7.42)。 -
在解压目录下 新建
my.ini配置文件 (复制以下内容,根据实际路径修改):ini[mysqld] # 端口(第一个版本用默认 3306) port=3306 # 安装目录(解压后的路径) basedir=D:\tool\mysql\mysql-5.7.42 # 数据存储目录(手动创建 data 文件夹,或让初始化自动生成) datadir=D:\tool\mysql\mysql-5.7.42\data # 字符集(默认 utf8mb4,兼容 emoji) character-set-server=utf8mb4 # 排序规则 collation-server=utf8mb4_general_ci # 允许最大连接数 max_connections=1000 # 跳过密码验证(初始化后可删除) skip-grant-tables [mysql] # 客户端字符集 default-character-set=utf8mb4
步骤 2:初始化 MySQL 并安装服务
-
以 管理员身份打开 cmd(重要!否则无权限安装服务)。
-
切换到 MySQL 5.7 的
bin目录:cmdcd /d D:\tool\mysql\mysql-5.7.42\bin -
初始化数据库(生成 data 目录和临时密码,5.7 需此步骤,8.0 可省略但建议执行):
cmdmysqld --initialize-insecure --user=mysql--initialize-insecure:无密码初始化(后续手动设密码)。- 执行成功后,解压目录会自动生成
data文件夹。
-
安装 MySQL 服务(服务名需唯一,如
MySQL57):cmdmysqld --install MySQL5.7.42 --defaults-file="D:\tool\mysql\mysql-5.7.42\my.ini"- 提示
Service successfully installed表示服务安装成功。
- 提示
-
启动服务:
cmdnet start MySQL5,7.42
步骤 3:设置 root 密码
-
连接 MySQL(因配置了
skip-grant-tables,无需密码):cmdmysql -u root -P 3306 -
执行 SQL 重置密码(替换
123456为你的密码):sqlUSE mysql; -- MySQL 5.7 密码字段是 authentication_string UPDATE user SET authentication_string=PASSWORD('123456') WHERE user='root'; FLUSH PRIVILEGES; EXIT; -
编辑
my.ini,删除skip-grant-tables一行,重启服务:cmdnet stop MySQL5.7.42 net start MySQL5.7.42 -
验证连接:
cmdmysql -u root -p123456 -P 3306能进入 MySQL 命令行则表示第一个版本安装成功。
三、安装第二个 MySQL 版本(以 8.0 为例)
步骤 1:解压并创建独立配置文件
- 将 MySQL 8.0 的 ZIP 包解压到 不同目录 (如
D:\Program Files\MySQL\mysql-8.0.42)。 - 在解压目录下新建
my.ini,核心修改 端口、目录、服务名(避免冲突):
bash
[mysqld]
# 1. 明确指定端口(必须非 0,且未被占用,如 3307/3308)
port=3308
# 2. 启用 TCP/IP 协议(Windows 必需,否则无法监听连接)
skip_networking=0
# 3. 绑定本地地址(允许本地连接,也可改为 0.0.0.0 允许远程连接)
bind-address=127.0.0.1
# 4. 安装目录(你的实际路径,双反斜杠或单斜杠)
basedir=D:\\tool\\mysql\\mysql-8.0.42
# 5. 数据目录(独立目录,无中文/空格)
datadir=D:\\tool\\mysql\\mysql-8.0.42\\data
# 6. 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
max_connections=1000
# 7. 可选:启用共享内存(Windows 辅助连接,避免协议缺失)
shared-memory=1
shared-memory-base-name=MySQL80
[mysql]
default-character-set=utf8mb4
步骤 2:初始化并安装独立服务
-
管理员 cmd 切换到 8.0 的
bin目录:cmdcd /d D:\Program Files\MySQL\mysql-8.0.42\bin -
初始化数据库:
cmdmysqld --initialize-insecure --user=mysql -
安装服务(服务名必须唯一,如
MySQL80):cmdmysqld --install MySQL8.0.42 --defaults-file="D:\Program Files\MySQL\mysql-8.0.42\my.ini" -
启动服务:
cmdnet start MySQL8.0.42
步骤 3:设置 8.0 的 root 密码
-
连接 8.0(指定端口 3308):
cmdmysql -u root -P 3308 -
重置密码(MySQL 8.0 密码字段是
authentication_string,且不支持PASSWORD()函数):sqlUSE mysql; -- 8.0 需用 ALTER 语句设密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; FLUSH PRIVILEGES; EXIT; -
编辑 8.0 的
my.ini,删除skip-grant-tables,重启服务:cmdnet stop MySQL8.0.42 net start MySQL8.0.42 -
验证连接:
cmdmysql -u root -p123456 -P 3308成功进入则表示第二个版本安装完成。
四、关键注意事项
-
端口必须唯一 :每个 MySQL 版本的
port不能重复(如 3306、3307、3308 等),可通过netstat -ano | findstr "3306"检查端口是否被占用。 -
目录独立 :
basedir(安装目录)、datadir(数据目录)必须分开,避免文件覆盖。 -
服务名唯一 :安装服务时
--install后的名称(如 MySQL5.742、MySQL8.0.42)不能重复,可通过services.msc查看已注册的服务。 -
环境变量(可选) :无需添加多个 MySQL 的
bin目录到系统环境变量,连接时通过cd切换到对应版本的bin目录,或指定完整路径(如D:\Program Files\MySQL\mysql-8.0.36\bin\mysql -u root -p -P 3307)。 -
卸载方法 :若需删除某个版本,先停止服务,再删除服务,最后删除目录:
cmdnet stop MySQL80 # 停止服务 sc delete MySQL80 # 删除服务(或 mysqld --remove MySQL80)
五、多版本切换使用示例
-
连接 MySQL 5.7(3306 端口):
cmdmysql -u root -p123456 -P 3306 -
连接 MySQL 8.0(3308 端口):
cmdmysql -u root -p123456 -P 3308 -
用 Navicat 等工具连接:需手动选择端口(3306/3308),其他配置与单版本一致。
通过以上步骤,即可在 Windows 上同时运行多个独立的 MySQL 版本,互不干扰。若需安装更多版本,重复"第二个版本"的流程,仅需修改端口、目录和服务名即可。