同一台电脑安装两台不同版本MySQL

关于版本

msi后缀的是安装包,根据引导安装即可(自动配置一些东西);zip是解压版(免安装)需要配置环境变量。

准备工作

安装前一定要先将自己电脑上已有的mysql服务停掉,在服务列表,右键mysql,停止。

安装过程

1、下载与解压

以下基于“电脑上已存在MySQL5版本”,再安装一个MySQL8版本

先去官网下载一个mysql8版本的zip包。(现在需要登录才能下载)

下载后解压到某个盘,我这里解压到D盘

3i9NqO.png

解压后是上图这个样子,此时是没有data文件夹和my.ini配置文件的。

2、安装服务与初始化

添加环境变量

在path中新建环境变量,其实此时两个环境变量的上下顺序是没有影响的。

3iC6h9.png

新增配置文件

你需要在解压后的目录下新建一个文件,并改为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
[mysqld]
# 设置3307端口
port=3307
# 设置mysql的安装目录
basedir=D:\\mysql-8.0.19-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\\mysql-8.0.19-winx64\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=utf8mb4

配置文件解释:上述中需要注意的是:①设置Mysql的端口,由于电脑上已存在mysql5版本占用3306端口,所以此台MySQL8就使用3307端口。②设置mysql的安装目录basedir,这里即是你的Mysql解压后的目录;设置MySQL数据库中数据的存放目录datadir,这里只需要在上个目录后面多个data即可。注意这里都是双斜杠

然后在解压后的目录下新建data文件夹,注意这里data文件夹里是什么都没有的。

3iF7h4.jpg

安装服务

以管理员身份运行cmd(我的是按win键,输入cmd,然后右键选中点击以管理员身份运行)然后切换到安装目录下的bin目录。

①:输入mysqld install mysql8 安装服务

3iiXTS.jpg

【如果输入命令后显示错误: 由于找不到VCRUNTIME140.dllxxxx无法继续执行代码,重新安装程序可能解决此问题,此问题的解决方案在标题:”后续“】

这里mysqld是安装命令,后面的mysql8是服务名称。这句话安装了一个名为mysq8的服务(直接mysqld install的话会默认安装名为mysql的服务,可是我们电脑上已有这个服务了【mysql5版本的】)。可以在服务列表查看到已经有了一个Mysql8

3iFRcn.jpg

这里可能有的同学看其他博客是输入mysqld install mysql8 –default -file “xxxxxxxxx”后面指定配置文件的安装,其实是不用的,因为此时已经在cmd里进入了当前mysql8版本的目录下,所以会默认使用当前的,而不会错误的使用mysql5版本的文件。

②: 输入mysqld --initialize 对data目录初始化

3iktET.jpg

输入命令后需要等待一段时间,这时你去data目录可以看到已经在慢慢生成文件了,生成完成后是这个样子的:

3iksDx.jpg

③: 启动服务试试:net start mysql8

3iAkiF.jpg

服务启动成功。

至此,所有安装配置已经完成。

查看version

可以使用mysql –version命令测试当前MySQL版本,不过要注意一点的是这里的mysql命令其实是有两个(一个5一个8版本),而默认环境变量中前面的权重要比后面的大,所以当环境变量中5版本的配置在8之上时,使用mysql –version就出现的是5版本信息(我这里安装的比较早,当时好像按错了,但是不知道为啥32版本可以在64版本的机器正常运行。说到这里我想起来第一次安装jdk也是32版本的,不过也可以正常在我64版本的机器运行)

3i3kBF.jpg

3i1DYR.jpg

反之则是8的信息(需要重新打开一个cmd输入命令)

3i1W0e.jpg

3i171P.jpg

这里还不能登录MySQL,因为密码还没有修改。

3、修改密码与使用

修改密码

在日常我们coding时需要切换不同版本的数据库时(MySQL5、MySQL8)只需启动服务,然后使用对应端口连接数据库即可:

例如现在我电脑正在运行MySQL5,我想使用MySQL8,那么我就只需将MySQL8服务开启即可(不必关掉MySQL5服务)

3iA6Qs.md.jpg

然后在cmd下连接MySQL8(不必是管理员身份)输入mysql -P3307 -uroot -p,提示输入密码,我们直接enter,发现密码错误。这是因为MySQL初始化data目录时生成了一个默认密码,我们可以在data下的一个.err文件中查看,这个文件名字并不是一定的,是以你的计算机名称命名。例如我的计算机名称为hanxu,3iEoAf.jpg

那么这个文件名字就叫hanxu.err

3iEb9g.jpg

打开后我们发现这样一句话:

[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: zsZ;eNxyd1x*

这个root@localhost:后面的内容zsZ;eNxyd1x*就是默认密码,我们使用此密码再次登录,然后修改密码即可。

然鹅我这里出现了另一个极端情况,输入密码后显示

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

这个是mysql服务没有启动的原因,可是我明明启动MySQL8的服务,关掉了MySQL5的服务,一切应该正常啊,,,无奈之下几经波折又找到了另外的解决方案。先免密登录,再清除掉root密码,然后正常登录,后修改密码即可,。

MySQL8免密登录:以管理员身份运行cmd,进入bin目录下,输入:

mysqld --console --skip-grant-tables --shared-memory

之前的版本,输入:

mysqld –skip-grant-tables

然后再开一个cmd窗口(不必以管理员身份,此时前一个窗口并未结束),输入mysql -uroot即可进入,进入之后输入以下命令,删除掉默认密码

1
2
3
use mysql 
select host,user,authentication_string,plugin from user; //查询可以看到是有密码的
update user set authentication_string = '' where user = 'root'; //将密码置空

然后将MySQL8服务重启,接着再开一个cmd(不必管理员身份),进入MySQL

mysql -P3307 -u root -p

3ilyqg.jpg

必须立即修改密码才能进行其他操作

alter user 'root'@'localhost' identified by '你的密码';

3ilbdJ.jpg

至此,所有问题都已解决。

【如果你在上述步骤中出了问题,请参见”另一个错误“】

4、5与8的切换

上述已经正常运行了MySQL8,我们现在切换为5版本:

①: 将MySQL5服务开启,是可以两个服务都开启的。

3iGCeU.md.jpg

②: 使用对应的端口连接对应的MySQL

我的电脑直接输入MySQL即可连接5版本(因为默认端口号是3306,所以连接时可以不加-P3306)

3iGkFJ.jpg

连接8版本时只需添加上端口号3307即可

3i8jWn.jpg

4、其他

后续

3ieYh8.md.jpg

下载下面文件,并双击运行安装即可解决,再次打开cmd,输入命令正常运行

链接: https://pan.baidu.com/s/1QfyloUDR9nD1Hq0qgX9Wzw 提取码: r2as

此问题不要和“’由于找不到VCRUNTIME140.dll,无法继续执行代码。”这个问题混淆,二者的不是相同的问题。

另一个错误

如果一切正常请不要修改此值

以下适用于在cmd中登录MySQL时出现错误Can’t connect to MySQL server on ‘localhost’ (10061)

检查你的注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql8

查看一个叫做ImagePath的值,并将其修改为:

"D:\mysql-8.0.19-winx64\bin\mysqld" --defaults-file="D:\mysql-8.0.19-winx64\my.ini" mysql8,这里的路径和服务名称换成你的】

3i8UIJ.jpg


直接看这里

无论已有什么版本的MySQL,或者没有已安装的MySQL,然后要安装什么版本的MySQL,都可以使用下面的方法。

浓缩版:

前置工作:关闭已有的MySQL服务。

  • 1、下载MySQL的zip包。

  • 2、解压到某个文件夹下,比如解压到D:/mysql5.7-x86文件夹中,然后将bin目录配置到path环境变量。

  • 3、在上述文件夹中新建my.ini,并添加以下内容。(如果是MySQL8版本,则需要将所有utf8改为utf8mb4)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [mysqld]
    port=3306
    # mysql安装目录
    basedir=D:\\mysql-5.7.29-winx64
    datadir=D:\\mysql-5.7.29-winx64\\data
    max_connections=200
    max_connect_errors=10
    character-set-server=utf8
    default-storage-engine=INNODB
    default_authentication_plugin=mysql_native_password

    [mysql]
    default-character-set=utf8

    [client]
    port=3306
    default-character-set=utf8
  • 4、新建data空文件夹

  • 5、以管理员身份启动cmd,并切换到D:/mysql5.7-x86/bin

  • 6、输入以下命令

    • mysqld install mysql5:安装服务并命名为mysql5
    • mysqld --initialize:初始化data目录(自动添加一些配置信息,这里会在data目录下的一个文件中生成随机密码,文件名为你的计算机名称.err)
    • net start mysql5:启动mysql5服务
  • 7、win+r输入regedit打开注册表,打开以下目录计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql5,将名为ImagePath的值修改为正确的路径:

    由于我的电脑已存在MySQL8,所以这里会错误的显示为MySQL8的路径:

    3t6bE6.jpg

    将其修改为正确的MySQL5的路径:

    3tcPVP.jpg

  • 8、继续刚才的cmd命令行,输入mysql -uroot -p然后输入密码(随机密码)即可进入。

  • 9、进入后无论你输入什么命令都会让你立即修改密码,按照提示的sql语句修改密码(不同版本修改密码sql语句不同)。

  • 10、之后若想cmd方式打开,则输入mysql -P端口号 -uroot -p,enter,然后输入密码即可(若你电脑上有多个版本的MySQL,则一定要将对应版本的服务启动【在服务列表启动即可】)。

    3tRfd1.jpg

    3tRwaq.jpg

    3tRgsJ.jpg

insist,on the road
-------------本文结束感谢您的阅读-------------