一条路服务,“保姆级教学”MySQL升级安装

发布时间:2024年01月21日

一、场景描述:

首先:原因是因为我在做一个项目的时候,创建表结构的时候显示报错“1067 - Invalid default value for ‘create_time‘错误”,这时候我意识到我的MySQL版本太低了,我当时是5.5,然后我就需要升级到MySQL5.7.

MySQL升级

首先科普一下:Mysql的升级方式分为两种:原地升级和逻辑升级。这两种升级方式,本质没有什么区别的。
只是在对数据文件的处理上有些区别而已。原地升级是直接将数据文件进行拷贝,而逻辑升级对数据文件的处理方式是通过逻辑导出导入,需要用到mysqldump。
逻辑升级大家都理解,这种方式在数据量比较大的情况下花费时间比较长。

二、步骤操作:
1.下载MySQL5.7.29 的zip包文件,下载地址:https://dev.mysql.com/downloads/mysql/(最新的mysql5.7的压缩包解压开你会发现,没有data目录和my.ini文件。)
2.解压到你想安装的路径下(与原5.6同路径就好)
3.将5.6 下的data文件和my.ini文件copy至5.7路径下()
4.移除MySQL5.6服务
?4.1?为了避免执行权限问题,请用Win+R,以管理员身份运行
4.2:cd 到5.6的bin目录下,并执行如下命令(将现有的mysql关闭)

mysqld --remove MySQL5.6

4.3你可能会遇到以下问题service does not exist!!!:不着急,继续操作!!!

4.4:

打开任务管理器–》服务,输入MySQL,查找一下具体的MySQL服务名(我的移除之前是MYSQL,所以下remove mysql5.5时,报not exist)

再次执行,至此,5.6服务被我们移除掉了这里总结一下,可能会有人不理解:就是你remove时不用加后缀5.几什么的,你直接输入remove MySQL就可以了!!!

5.添加新版本:

5.1 同样,cd到5.7 的bin目录下,并执行如下命令

mysqld --install mysql5.7

5.2:启动mysql5.7服务

输入以下命令

net start mysql5.7

好啦,这里我就替大家踩了很多坑了,接下来我一一给大家列举出来,并且给出解决方法

首先是问题一:

这里一开始就是无法启动,原因是:我一开始是直接复制原来的my.ini配置文件到新版的mysql目录下,使用就无法启动

解决办法:

手动创建配置文件,文件名为:my.ini,添加内容如下:

可直接复制该文件

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\\tools\mysql-5.7.25-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\\tools\mysql-5.7.25-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

问题二:

在cmd命令窗口中输入mysql,显示mysql 不是内部或外部命令!

这里是没有配置环境变量的原因,导致我每次要启动MySQL服务总是要cd到bin目录下才能识别的到!

这里教大家一下配置环境变量:

找到mysql.exe所在的目录

复制路径

添加到环境变量

找到环境变量的窗口

重新运行即可!

问题三:

在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问

对于出现拒绝访问root用户的解决方案
错误1045(28000):用户'root'@'localhost'(使用密码:YES)拒绝访问

首先解析此英文:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES);
解析的地方有两处:1.Access denied(拒绝访问);2.using password:NO/YES

出现access denied的原因有如下可能:

1)mysql的服务器停止:
  若MySQL已经没有启动,重启MySQL服务器:systemctl restart mysqld
2)用户的端口号或者IP导致:
  若用户的端口号与IP(3306/3307)不一致,打开my.ini文件进行编辑。全部编辑替换为: port=X
3)mysql的配置文件错误----my.ini等文件:
  my.ini文件误输入无效内容,不知道到何处。复制替换该文件;有人已经对my.ini文件进行解释以及注释:https://blog.csdn.net/lienfeng6/article/details/78140404
4)root用户的密码错误(后面解决)

解决方案:

vim /etc/my.cnf文件;
在[mysqld]后添加skip-grant-tables(登录时跳过权限检查)

重启MySQL服务?

net start mysql5.7

输入 mysql

进入mysql后,输入

use mysql;

登录mysql,输入mysql –uroot –p;直接回车(Enter)如果报:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

输入:

flush privileges;

最后记得把my.ini的skip-grant-tables删除或者注释掉!!!

6、升级

mysql:mysql_upgrade -uroot -p

这个过程MySQL5.7是把步骤3copy来的data数据加入的过程

关闭,重新启动即可,至此,你的MySQL升级就算完成了

验证以下:

最后给大家,说一下

为什么cmd中输入mysql,显示Welcome to the MySQL monitor. 意思就是直接进入了MySQL

这里官方文档给出了解释,你在请求mysql服务器时,window是默认ODBC

你自己要加上mysql -uroot -p

来进入你要的用户和密码!!!

文章来源:https://blog.csdn.net/qq_63683610/article/details/135717471
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。