前言

由于平时使用的数据库是 MySQL5,目前大部分公司使用的也是 MySQL5,但是最近开发的项目需要使用 MySQL8,所以准备安装两个版本的数据库,一个工作使用,一个了解前沿技术。

一、前置工作:

备份原有数据库(MySQL mysqldump 备份数据库

1
mysqldump -u root -p --all-databases > D:\bak20221121.sql

下载 MySQL 安装包(链接

解压到对应目录

二、彻底卸载 Mysql5.6

第一步:停止服务及删除服务
停止 MySQL 服务,Cmd 管理员模式下输入
net stop mysql;
检查服务
Win+R 输入services.msc 找到 Mysql 服务,停止服务
并将 “-“服务”-“MySQL, 把 “正在运行” 改成 “停止” 或者 “禁用”
删除服务,Cmd 管理员模式中输入命令
sc delete mysql
**第二步:清除安装本地安装文件 **
使用RevoAppBar64卸载 MySQL5.6
使用Everything寻找 MySQL 文件夹
找到 MySQL 的安装路径,把和 MySQl 有关的文件全部删除。
如果安装在 C 盘,注意检查一下 C:\Program Files (x86)和 C:\Program Files 这两个文件夹。

第三步:清理注册表:完全卸载完毕
删除关于 MySQl 的注册表。
在运行框内输入”regedit”,点击确定,会弹出注册表。

1
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL
1
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL
1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL

还有就是 F3 或 Ctrl+F 打开查找框,输入 MySQL,注意焦点放在计算机上
还有重要的一步删除 Connector Net XXX 注册表,大家失败的原因好多也是在这个注册表上面
第四步:将该路径(C:\ProgramData\MySQL)粘贴到文件资源管理器地址栏中,删除此文件夹下的所有内容。

注:如果删除文件时删除不了,检查是否还有有关 MySQL 的程序在运行,到任务管理器中去找,然后结束任务。

三、安装 MySQL5.7 和 MySQL8.0.31

配置环境变量
** 添加系统变量**
MYSQL5_HOME
MYSQL8_HOME

然后在 Path 中,添加各自的 bin
%MYSQL5_HOME%\bin
%MYSQL8_HOME%\bin

安装配置 MySQL5
  1. 进入到 mysql5 的安装目录下创建必要文件 my.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3305端口
port = 3305
# 设置mysql的安装目录
basedir=D:\\Software\\Code\\Mysql\\mysql-5.7.40
# 设置mysql数据库的数据的存放目录(自动生成,不然可能报错)
# 允许最大连接数
max_connections=200
# 允许最大连接人数
max_user_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
explicit_defaults_for_timestamp=true
  1. 进入 mysql5 的父目录(以管理员启动 cmd)
1
2
3
D:

cd D:\Software\Code\Mysql

3.执行 mysql 初始化

1
mysql-5.7.40\bin\mysqld --install MYSQL5 --defaults-file=D:\Software\Code\Mysql\mysql-5.7.40\my.ini

初始化 Mysql:

1
mysql-5.7.40\bin\mysqld --initialize --console

注意:窗口会显示默认密码记得将其记录下来 4. 启动 mysql8

1
net start MYSQL8
  1. 登录 mysql5 并修改密码
1
mysql -u root -P 3305 -h localhost -p
1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限

1
flush privileges ;
安装配置 MySQL8
  1. 进入到 mysql8 的安装目录下创建必要文件 my.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[client]
# 设置mysql客户端默认字符集
port = 3308
default-character-set=utf8mb4

[mysqld]
# 设置3308端口
port = 3308
# 设置mysql的安装目录
basedir=D:\\Software\\Code\\Mysql\\mysql-8.0.31
# 允许最大连接数
max_connections=200
# 允许最大连接人数
max_user_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#忘记密码时使用下面的命令
#skip-grant-tables
#设置协议认证方式
authentication_policy=mysql_native_password
[mysql]
default-character-set=utf8mb4
  1. 进入 mysql8 的父目录(以管理员启动 cmd)
1
2
3
D:

cd D:\Software\Code\Mysql

3.执行 mysql 初始化

1
mysql-8.0.31\bin\mysqld --install MYSQL8 --defaults-file=D:\Software\Code\Mysql\mysql-8.0.31\my.ini

初始化 Mysql:

1
mysql-8.0.31\bin\mysqld --initialize --console

注意:窗口会显示默认密码记得将其记录下来 4. 修改注册表(最重要的一步)
Win+R 运行 regedit
找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MYSQL8imagePath
修改为MYSQL8的路径:

1
D:\Software\Code\Mysql\mysql-8.0.31\bin\mysqld --defaults-file=D:\Software\Code\Mysql\mysql-8.0.31\my.ini MYSQL8
  1. 启动 mysql8
1
net start MYSQL8
  1. 登录 mysql8 并修改密码
    登录 MySQL8
1
mysql -u root -P 3308 -h localhost -p
1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限

1
flush privileges ;

四、常见问题

1.net start mysql 发生系统错误
先切到 mysql 的 bin 目录的根路径,下面以我的路径为例

1
2
3
4
D:

cd D:\Software\Code\Mysql\mysql-8.0.31\bin

先把 mysql 删除:

1
mysqld --remove

再重新安装:

1
mysqld --install

最后再启动:

1
net start mysql

成功启动! 2.如何忘记密码进行修改 mysql 密码
对于5.7版本: 1.在命令行输入 net stop mysql 关闭当前运行的 mysql。

2.切换到 MySQL 安装路径下:D:\Enviroment\MySQL-5.7.19\bin;如果已经配了环境变量,可以不用切换了。
命令行输入:

1
mysqld -nt --skip-grant-tables

这时这个 cmd 窗口会卡住

3.重新打开一个 cmd,用管理员打开,输入 mysql -uroot -p;如果提示密码直接回车就进去了

4.修改密码:

1
2
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
1
flush privileges;

对于 mysql8.0 以上的有几点不一样的地方:

1.将第 2 步的,命令行改为:mysqld –console –skip-grant-tables –shared-memory 这时这个 cmd 窗口会卡住;

2.然后重启一个 CMD 窗口,输入mysql -uroot -p,按空格直接进入,不用输入密码。
然后输入指令:

3.再输入:

1
flush privileges ;

4.修改密码

1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

对于本机已经有 mysql5.7 了但 Mysql8 失败的原因
原因:我在网上找了很多博客,最后终于在修改注册表那里发现了为什么再输入初始密码哪里总是报 ERROR;原因是我们 initial 的时候,data 文件的路径是指向 mysql5.7 的,因此我们需要将注册表路径换了

五、参考

Win10 下 mysql5.5 和 mysql8.0.20 共存
Win 下同时安装 MySQL5 和 MySQL8 并存
Windows10 中同时安装 MySQL5 和 MySQL8
Windows 下同时安装 Mysql5.7 和 Mysql8.28 版本的最详细配置
多版本 MySQL 的同时安装及配置