windows安装绿色版mysql-多版本安装
在一台电脑上安装多个不同版本的 MySQL 绿色版。关键在于为每个版本准备独立的“四要素”:独立的配置文件、数据目录、端口和服务名。
本文以mysql5.7和mysql8.0为例,演示针对 Windows 系统的详细操作步骤。
文章资源:https://www.ilanzou.com/s/0iiL0dnC?code=msql
演示步骤
📝 准备工作
以管理员身份运行:后续所有命令提示符(CMD)操作,都必须右键“以管理员身份运行” 。
路径规范:确保两个 MySQL 的解压路径不含中文和空格。
分配端口:规划 MySQL 5 使用
3306 端口,MySQL 8 使用3307端口。
🗂️ 一、解压并放置安装包
将两个绿色安装包解压到两个不同的目录,例如:
MySQL 5:
D:\env\mysql-5.7.36-winx64MySQL 8:
D:\env\mysql-8.0.18-winx64
⚙️ 二、创建并配置 my.ini 文件
这是最关键的一步。分别在两个 MySQL 的根目录下新建一个 my.ini 文件,然后填入以下内容:
1. 配置 MySQL 5(使用 3306 端口)
在 D:\env\mysql-5.7.36-winx64\my.ini 中粘贴以下内容,并将 basedir 和 datadir 替换为你的实际路径。
[mysqld]
# 设置端口
port=3306
# 设置mysql的安装目录
basedir=D:/env/mysql-5.7.36-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/env/mysql-5.7.36-winx64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集
character-set-server=utf8
# 默认存储引擎
default-storage-engine=INNODB
# 默认使用 mysql_native_password 插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8注意:路径中的分隔符建议使用
/ 或\\,避免使用单个\引发错误。
2. 配置 MySQL 8(使用 3307 端口)
在 D:\env\mysql-8.0.18-winx64\my.ini 中粘贴以下内容,并将 basedir 和 datadir 替换为你的实际路径。
[mysqld]
# 设置端口
port=3307
# 设置mysql的安装目录
basedir=D:/env/mysql-8.0.18-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/env/mysql-8.0.18-winx64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集
character-set-server=utf8mb4
# 默认存储引擎
default-storage-engine=INNODB
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4Tips:MySQL 8.0 对字符集的默认建议是
utf8mb4。
🚀 三、初始化并安装为 Windows 服务
这一步需要为每个版本单独操作。
1. 初始化 MySQL 5 实例:
以管理员身份打开 CMD,切换到 MySQL 5 的 bin 目录:
cd /d D:\env\mysql-5.7.36-winx64\bin执行初始化命令(
--initialize-insecure会生成一个空密码的 root 账户):mysqld --defaults-file="D:\env\mysql-5.7.36-winx64\my.ini" --initialize-insecure --console注册系统服务(服务名自定义,如
MySQL57):mysqld --install MySQL57 --defaults-file="D:\env\mysql-5.7.36-winx64\my.ini"
2. 初始化 MySQL 8 实例:
新开一个管理员 CMD 窗口,切换到 MySQL 8 的 bin 目录:
cd /d D:\env\mysql-8.0.18-winx64\bin执行初始化命令:
mysqld --defaults-file="D:\env\mysql-8.0.18-winx64\my.ini" --initialize-insecure --consoleTips:你也可以将
--initialize-insecure 换成--initialize,这会生成一个临时随机密码,请务必保存好控制台输出的密码,具体步骤参考下文【初始化时生成一个临时随机密码的操作步骤】。注册系统服务(服务名自定义,如
MySQL80):mysqld --install MySQL80 --defaults-file="D:\env\mysql-8.0.18-winx64\my.ini"
🔑 四、启动服务并修改密码
1. 启动服务:
启动 MySQL 5:
net start MySQL57启动 MySQL 8:
net start MySQL80
2. 连接并修改密码(以 MySQL 5 为例,MySQL 8 操作类似,注意更换端口):
连接时必须使用
-P (大写)指定端口:mysql -u root -P 3306 -h 127.0.0.1修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; FLUSH PRIVILEGES;
✅ 验证与日常使用
验证端口:在 CMD 中运行
netstat -ano | findstr :3306 和netstat -ano | findstr :3307,确认两个端口都处于LISTENING状态。日常连接:之后连接不同版本的 MySQL,只需在命令中指定不同的
-P端口即可。连接 MySQL 5:
mysql -u root -p -P 3306 -h 127.0.0.1连接 MySQL 8:
mysql -u root -p -P 3307 -h 127.0.0.1
⚠️ 常见问题与解决
服务名冲突:如果之前安装过默认的 MySQL 服务,不指定服务名安装会覆盖。务必使用
--install 唯一服务名来区分。初始化失败:检查
my.ini 中basedir 和datadir 路径是否正确,且datadir 指向的数据目录必须为空,否则会因server-uuid冲突导致启动失败。无法连接:检查防火墙是否放行了
3306 和3307 端口。同时,MySQL 8.0 使用了新的密码认证插件,连接时若遇到认证问题,可在my.ini 的[mysqld] 下添加default_authentication_plugin=mysql_native_password。环境变量冲突:建议不要将两个 MySQL 的
bin 目录都加入系统 Path 环境变量,以免mysql命令指向混乱。可以通过在命令中指定完整路径,或只添加常用版本的路径来解决。服务管理命令
> mysqld --install MySQL57 --defaults-file="......\mysql-5.7.44-winx64\my.ini" Service successfully installed. > net start MySQL57 MySQL57 服务正在启动 . MySQL57 服务已经启动成功。 > sc delete MySQL57 [SC] DeleteService 成功 # 若出现删除失败的情况,可以尝试重启电脑解决 > sc delete MySQL57 [SC] DeleteService 失败 1072: 指定的服务已标记为删除。
额外说明
1. 初始化时生成一个临时随机密码的操作步骤
初始化时将 --initialize-insecure 换成 --initialize,会生成临时密码,注意在安装完成前不要关闭命令行窗口,或保存好临时密码,否则需要重新安装。
mysqld --initialize --console
启动mysql服务
net start mysql
使用前面复制的临时密码登录mysql
mysql -uroot -p(oe.hF:6?h.y
修改临时密码
alter user root@localhost identified by 'NewPassword';刷新系统表,使新密码生效
flush privileges;
2. 若 datadir 不为空,且需要保留原有数据时的操作步骤
⚠场景示例和建议:mysql绿色版安装在非系统盘D盘,重装系统后,mysql安装目录存在旧数据,且需要保留旧数据,则可以使用此步骤。该步骤同样适用于将绿色版mysql转移到其他机器,即将mysql目录打包,解压到新机器,然后执行此步骤即可。
确认 my.ini 中以下配置正确
[mysqld] port=3306 basedir=D:/env/mysql-5.7.36-winx64/ datadir=D:/env/mysql-5.7.36-winx64/data/ # 建议加上,避免旧数据的时间戳警告 explicit_defaults_for_timestamp=true安装服务(不需要初始化数据库)
以管理员身份打开 CMD,切换到 MySQL 5.7 的 bin 目录:
cd /d D:\env\mysql-5.7.36-winx64\bin然后直接安装服务(注意服务名要唯一,比如
MySQL57):mysqld --install MySQL57 --defaults-file="D:\env\mysql-5.7.36-winx64\my.ini"看到
Service successfully installed.即成功。启动服务
net start MySQL57连接测试
mysql -u root -p -P 3306 -h 127.0.0.1 (使用旧密码登录即可)
- 感谢你赐予我前进的力量

