前言

原本已安装mysql5.7,原本可以试着删除5.7版本的,但是里面保存了一些数据不想删掉,还有数据库的卸载也是一个很奇怪的过程,一不小心删不干净就很难再安装了,所以就想着再安装一个8.0就好了,原本以为只是改一下端口而已,但是在这个过程还是出现了很多问题,然后我尝试了很多种过程,在这里就讲一下自己的最后一遍,可能和网上别人的步骤有点出入。

先把之前的5.7的服务关掉(为什么要关掉,我也不知道,我已经被折磨的不行了,就试一下),在任务管理器的服务一栏可以找到

img

下载mysql8.0的解压版

链接

MySQL :: Download MySQL Community Server

img

解压

img

文件内容准备

开始没有data和my.ini文件。

网上说data文件夹不需要自己手动创,不然报错什么的,我也试了这个做法,但是后面一直出现无法链接本地主机什么的错误,后面还有说到这个问题然后我就重新来,在最开始的时候自己手动创建了一个空的data

img

创建并编辑my.ini文件

这里为mysql8设置3307端口,因为5.7版本的占用了3306端口。

可以进入cmd(不需要管理员权限):输入 Netstat -ano|findstr 3307 查看3307是否被占用,没有则什么都不会返回,我们就可以使用这个端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[mysqld]
# 这里设置3307端口
port=3307
# 设置mysql的安装目录
basedir=D:\MySQL\mysql-8.0.25-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\MySQL\mysql-8.0.25-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
default-character-set=utf8

增加环境变量

右键电脑->属性->高级系统设置->环境变量->找到path->添加路径(D:\MySQL\mysql-8.0.25-winx64\bin),路径看自己的安装情况,主要就是方便后面在cmd中的切换,也可以不用设置

img

玄学开始

data文件夹

多安装一个mysql是很玄学的事情,网上大多数情况都是不能手动添加data文件的,不然会报一个错误,所以我这里从一开始就没有自己创建过,都是等运行命令mysqld –initialize –console才让它自己生成data文件。然后这里我就说一下自己最后一遍的做法(成功案例),因为我一直在重复这个步骤,一直报错,说什么无法连接到localhost,我也不知道具体哪一步我错了,最后一次我成功了,我重头开始,换成开始就创建了一个空的data文件夹

初始化data文件

管理员身份运行

img

输入路径可以快速切换到bin目录

img

输入初始化命令

mysqld –initialize –console

此时在之前创建的空data目录多了很多文件

img

保留生成的密码串

初始化data文件夹之后会生成一个首次登陆的密码串:

不包含最前面的空格,有时候最后一个字符可能是分号“ ; ”,它也是密码的一部分,要一起输进去

如果看不清是英文字母“ l ”还是阿拉伯数字“ 1 ”,两者在cmd界面长得太像了,介意直接复制粘贴,或者复制到微信输入框,可以辨别清楚

img

创建、启动服务

mysqld –install mysql8(mysql8主要就是为了和之前5.7版本的服务名区分开来),然后开始服务:net start mysql8

img

在这里可能出现服务无法启动的情况:见下面描述

修改注册表

首先win+r,输入 regedit 打开注册表,寻找路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql8

修改imagePath的数据部分,格式和5.7版本的一样,我的5.7版本则是在上面的MySQL,可以打开查考一下

img

登录数据库

开启服务成功之后就要去登录数据库了:mysql -uroot -P3307 -pC6.d5B;pt-v1

mysql -uroot -P3307 -p(前面生成的很奇怪的初始密码)

最后这一波操作就很灵性了,也是玄学之一。

如图所示,我被这个错误折磨了一下午ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3307’ (10061),网上的那些也说得奇奇怪怪,感觉和没说一样,然后我就试着停止服务,开始服务之后,再登录一次,居然成功了!!!芜湖起飞!!!可以看到,我什么都没改,却又成功了,停止和开启mysql8服务这个操作我试了半天了,试了无数次了,却在这个时候可以了。然后它为什么可以了,它和前面的操作的差别就在于上面所提到的的,我自己先创了一个空的data目录,,,一个一直被喷的做法却救了我,想无。

img

修改密码

既然进来mysql8数据库了,就修改一下密码(最后记得要分号):

ALTER USER ‘root‘@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘自己的密码’;

img

希望对你们有帮助,在这里我就建议就多试试,多试一下不同的安装过程,不要那么死板,一堆人说不可以这么做你就不敢或者不想去自己试一下,(其实要不是自己走投无路了,我也不会去试一试哈哈哈),反正data文件夹随便删,它不影响整体,还可以一直被创建。

两个服务同时开启互不影响

img

登陆的时候只要提供不同的端口即可

mysql -uroot -P3307 -p

img

mysql -uroot -P3306 -p

img