由于5.5版本的MySQL比较低,在运行SQL文件的时候提示不支持部分功能,准备将MySQL进行更新一下,于是就有了这篇文章。
1 准备
本机 windows 10 环境
1.1 下载安装包
去MySQL oracle的官网(地址)下载windows版本安装包,
官网提供的是压缩包版,选择第一项即可点击download进入下载页面
1.2 备份数据库
mysqldump -u root -p --all-databases > 保存的目标路径\sql文件名.sql
mysqldump -u root -p --all-databases > D:\sql\Backup.sql
完成数据库安装后,用可视化管理工具运行该文件即可
2 清除原有的MySQL所有内容
首先找到原来的安装路径(如果不知道安装到哪里了,可以查看MYSQL服物可执行文件的路径,操作步骤:此电脑右击----> 管理--------->找到服务和应用程序------->点击服务,找到MySQL服务,双击即可看到==可执行文件的路径==)
接着==以管理员身份运行命令行CMD==
net stop mysql 关闭MySQL服务
sc delete MySQL 删除MySQL服务
2.1 卸载控制面板中的MySQL(如果不存在,进继续下一步)
2.2 删除C盘文件 C:\Program Files 或者C:\Program Files(x86)里面的MySQL文件夹
2.3 删除注册表(win+r 输入regedit 打开注册表)
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MySQL
按照该路径寻找到MySQL文件夹,右键删除该文件夹
2.4 删除C盘中的数据C:\ProgramData\MySQL
(如果找不到,可能是你的隐藏项目选项未勾选)
在这里面就可以看到我们之前的建立的各种数据库和各种表
3 安装新版本
3.1 将下载的压缩包解压到一个安装文件夹中,我这里是D:\MySQL\
==此时路径变为D:\MySQL\mysql-8.0.11-winx64\==
然后进入文件夹可以看到如上的内容
3.2 在mysql-8.0.11-winx64文件夹下面新建一个my.ini文件和一个data文件夹
==这里有一点,看了网上的教程,有的人说不要创建data文件夹,其实创建不创建都行,只不过创建和不创建的情况接下来的执行命令不同==
my.ini(新建文档.txt,另存为my.ini 编码utf-8)
添加以下内容
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\MySQL\mysql-8.0.27-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\MySQL\mysql-8.0.27-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
安装目录basedir
数据存放目录datadir
这两项,一定要和自己的安装路径一致,注意大小写错误
3.3 配置新的系统环境变量
- 新建变量MYSQL_HOME,变量值D:\MySQL\mysql-8.0.27-winx64(你的安装路径)
- 添加Path,新建%MYSQL_HOME%\bin
3.4 命令行完成初始化
==以下执行的命令都是在管理员身份、管理员身份、管理员身份下进行、并且进入到安装的bin目录下==
而且这里面有时候要开好几个窗口,所以每次都要保证自己是管理员身份运行,否则就会提示以下类似问题
- “[SC] OpenService 失败 5:拒绝访问”
- MySQL服务无法启动
- Install/Remove of the Service Denied!
出现这些情况,先查看一下自己是不是以管理员身份运行cmd
这里面我试了好几种版本,但都没有成功,最后是把他们结合了一下,才成功。
版本一(==不手动创建data文件夹==)
参考文章,
初始化
mysqld --initialize-insecure
mysqld --defaults-file=E:\Mysql\mysql-8.0.19-winx64\my.ini --initialize –console
安装服务
mysqld install
初始化
mysqld --initialize-insecure --user=mysql
启动服务
net start mysql
==来自原作者的提示==
启动后你的root用户密码为空(密码改不改自己随意)回车出现 “Enter password” 不用输入直接点击回车下一步 不用输入直接点击回车下一步 不用输入直接点击回车下一步重要的事情说三遍,密码就是123456,不要填enter password
mysqldadmin -u root -p password 123456
登录
mysql -u root -p
(回车后,输入密码即可 ,之前设置的密码为123456)
==来自原作者的图==
这里我在登录的那里也出错,提示拒绝访问,
==MySQL Access denied for user ‘root‘@‘localhost‘ (using password: YES/NO) ==
(但是可能的潜在原因是我在Enter password:这里输入了123456)
然后我再怎么整,都不行了,甚至把这次安装的注册表,以及data文件夹,my.ini文件都给删了,然后重开还是不行
崩溃。。。
==另外在执行这个版本的操作时,经常遇到命令执行失败,重新打开一个命令行窗口,又成功的情况,不知道是什么情况==
版本二(==自己创建data文件夹==)
初始化:
mysqld --initialize --user=mysql --console
安装服务
mysqld -install
启动服务
net start mysql
登进数据库 (密码就输入刚才的随机密码)
mysql -u root -p
借用一张别人的图来说明一下()
修改密码
ALTER USER root@localhost IDENTIFIED BY '123456'; # 修改密码为:123456
==这个版本我执行到登录的时候,输入那个随机密码,就一直提示我拒绝访问==
==MySQL Access denied for user ‘root‘@‘localhost‘ (using password: YES/NO) ==
崩溃。。。
3.5 access denied for user 'root'@'localhost' using password:YES/NO解决方案
来自大佬文章的指点方法出处
我是在版本二的基础上进行解决的,
按照原文中的第三种方法
- 在安装MySQL的目录下创建mysqlc.txt
- 内容输入 ==ALTER USER 'root'@'localhost' IDENTIFIED BY '12345'
- 管理员身份命令行方式启动服务器,指定启动时执行上述的密码修改命令文件。
- 重启服务 net stop mysql; net start mysql
- 输入设置的密码 12345
- 登录成功
- ............................................
(此处无声胜有声)
其他
在解决这个拒绝登录的问题上,一些文章是在linux环境下,在/etc/my.cnf添加--skip-grant-tables 然后重启服务解决,
还有一篇文章使用
mysqld --user=mysql --skip-grant-tables --skip-networking&
但是重启后没有成功,难整。
4 最后
感谢以下几篇大佬写的文章
Mysql更换版本的操作,非常详细(包括数据备份,卸载,安装,还原)
Windows10系统MySQL mysql-8.0.19-winx64zip安装细明
关于MySQLzip安装常见报错解决方案!这个里面有一些其他的错误解决方法
windows10安装MySQL8.0.27
access denied 解决方法出处
my.ini文件参数中文注释