关于版本
msi后缀的是安装包,根据引导安装即可(自动配置一些东西);zip是解压版(免安装)需要配置环境变量。
准备工作
安装前一定要先将自己电脑上已有的mysql服务停掉,在服务列表,右键mysql,停止。
安装过程
1、下载与解压
以下基于“电脑上已存在MySQL5版本”,再安装一个MySQL8版本
先去官网下载一个mysql8版本的zip包。(现在需要登录才能下载)
下载后解压到某个盘,我这里解压到D盘
解压后是上图这个样子,此时是没有data文件夹和my.ini配置文件的。
2、安装服务与初始化
添加环境变量
在path中新建环境变量,其实此时两个环境变量的上下顺序是没有影响的。
新增配置文件
你需要在解压后的目录下新建一个文件,并改为my.ini。内容:
1 | [mysqld] |
配置文件解释:上述中需要注意的是:①设置Mysql的端口,由于电脑上已存在mysql5版本占用3306端口,所以此台MySQL8就使用3307端口。②设置mysql的安装目录basedir,这里即是你的Mysql解压后的目录;设置MySQL数据库中数据的存放目录datadir,这里只需要在上个目录后面多个data即可。注意这里都是双斜杠
然后在解压后的目录下新建data文件夹,注意这里data文件夹里是什么都没有的。
安装服务
以管理员身份运行cmd(我的是按win键,输入cmd,然后右键选中点击以管理员身份运行)然后切换到安装目录下的bin目录。
①:输入mysqld install mysql8
安装服务
【如果输入命令后显示错误: 由于找不到VCRUNTIME140.dllxxxx无法继续执行代码,重新安装程序可能解决此问题,此问题的解决方案在标题:”后续“】
这里mysqld
是安装命令,后面的mysql8是服务名称。这句话安装了一个名为mysq8的服务(直接mysqld install的话会默认安装名为mysql的服务,可是我们电脑上已有这个服务了【mysql5版本的】)。可以在服务列表查看到已经有了一个Mysql8
这里可能有的同学看其他博客是输入mysqld install mysql8 –default -file “xxxxxxxxx”后面指定配置文件的安装,其实是不用的,因为此时已经在cmd里进入了当前mysql8版本的目录下,所以会默认使用当前的,而不会错误的使用mysql5版本的文件。
②: 输入mysqld --initialize
对data目录初始化
输入命令后需要等待一段时间,这时你去data目录可以看到已经在慢慢生成文件了,生成完成后是这个样子的:
③: 启动服务试试:net start mysql8
服务启动成功。
至此,所有安装配置已经完成。
查看version
可以使用mysql –version命令测试当前MySQL版本,不过要注意一点的是这里的mysql命令其实是有两个(一个5一个8版本),而默认环境变量中前面的权重要比后面的大,所以当环境变量中5版本的配置在8之上时,使用mysql –version就出现的是5版本信息(我这里安装的比较早,当时好像按错了,但是不知道为啥32版本可以在64版本的机器正常运行。说到这里我想起来第一次安装jdk也是32版本的,不过也可以正常在我64版本的机器运行)
反之则是8的信息(需要重新打开一个cmd输入命令)
这里还不能登录MySQL,因为密码还没有修改。
3、修改密码与使用
修改密码
在日常我们coding时需要切换不同版本的数据库时(MySQL5、MySQL8)只需启动服务,然后使用对应端口连接数据库即可:
例如现在我电脑正在运行MySQL5,我想使用MySQL8,那么我就只需将MySQL8服务开启即可(不必关掉MySQL5服务)
然后在cmd下连接MySQL8(不必是管理员身份)输入mysql -P3307 -uroot -p
,提示输入密码,我们直接enter,发现密码错误。这是因为MySQL初始化data目录时生成了一个默认密码,我们可以在data下的一个.err
文件中查看,这个文件名字并不是一定的,是以你的计算机名称命名。例如我的计算机名称为hanxu,
那么这个文件名字就叫hanxu.err
打开后我们发现这样一句话:
[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 | use mysql |
然后将MySQL8服务重启,接着再开一个cmd(不必管理员身份),进入MySQL
mysql -P3307 -u root -p
必须立即修改密码才能进行其他操作
alter user 'root'@'localhost' identified by '你的密码';
至此,所有问题都已解决。
【如果你在上述步骤中出了问题,请参见”另一个错误“】
4、5与8的切换
上述已经正常运行了MySQL8,我们现在切换为5版本:
①: 将MySQL5服务开启,是可以两个服务都开启的。
②: 使用对应的端口连接对应的MySQL
我的电脑直接输入MySQL即可连接5版本(因为默认端口号是3306,所以连接时可以不加-P3306)
连接8版本时只需添加上端口号3307即可
4、其他
后续
下载下面文件,并双击运行安装即可解决,再次打开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
,这里的路径和服务名称换成你的】
直接看这里
无论已有什么版本的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
:安装服务并命名为mysql5mysqld --initialize
:初始化data目录(自动添加一些配置信息,这里会在data目录下的一个文件中生成随机密码,文件名为你的计算机名称.err)net start mysql5
:启动mysql5服务
7、win+r输入regedit打开注册表,打开以下目录
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql5
,将名为ImagePath
的值修改为正确的路径:由于我的电脑已存在MySQL8,所以这里会错误的显示为MySQL8的路径:
将其修改为正确的MySQL5的路径:
8、继续刚才的cmd命令行,输入
mysql -uroot -p
然后输入密码(随机密码)即可进入。9、进入后无论你输入什么命令都会让你立即修改密码,按照提示的sql语句修改密码(不同版本修改密码sql语句不同)。
10、之后若想cmd方式打开,则输入
mysql -P端口号 -uroot -p
,enter,然后输入密码即可(若你电脑上有多个版本的MySQL,则一定要将对应版本的服务启动【在服务列表启动即可】)。