mysql5.1升级到mysql5.7(使用yum源)

  • A+
所属分类:mysql  数据库

在本博客中,"mysql"是一个系列文章,这些文章主要对mysql/mariadb的常用知识点进行了总结,每一篇博客总结的知识点有所不同,具体内容可参考mysql文章列表。

mysql文章列表直达链接:mysql知识点总结

 mysql5.1升级到mysql5.7(使用yum源)

centos6.x中,如果通过yum安装mysql,mysql的版本默认应该是5.1,如果在使用了一段时间以后,想要通过yum升级到5.7版本,可以参考如下操作。

 

首先,当前版本的mysql为5.1.73

mysql5.1升级到mysql5.7(使用yum源)

 

此处,我们将5.1升级为5.7

注意:在开始操作之前,请完全备份当前数据库,以防升级时出现问题,此处已备份数据库与mysql数据库对应的配置文件,数据库较小可使用mysqldump备份,数据库较大推荐使用xtrabackup备份。

 

备份完成后,我们开始准备mysql5.7社区版本的yum源。

访问mysql官网下载页面

https://dev.mysql.com/downloads/mysql/

 

我的操作系统为centos6,所以此处选择的操作系统为redhat

mysql5.1升级到mysql5.7(使用yum源)

 

我们其实也可以直接下载对应rpm包升级mysql,但是此处使用yum源进行升级,点击下图中的"Download Now"连接,跳转到yum源安装包界面。

mysql5.1升级到mysql5.7(使用yum源)

 

在yum源安装包界面,根据自己的版本,选择对应的yum源安装包,点击对应的下载按钮。

mysql5.1升级到mysql5.7(使用yum源)

 

之后会提示登录对应的oracle账户,使用免费注册的oracle账户登录即可下载。

mysql5.1升级到mysql5.7(使用yum源)

 

将下载后的rpm包上传到服务器。

mysql5.1升级到mysql5.7(使用yum源)

 

安装此rpm包即可自动安装mysql5.7的yum源。

# yum install mysql57-community-release-el6-11.noarch.rpm

 

5.7版本的yum源配置完成后,即可进行升级操作,升级前请再次确定已经备份了数据库与对应的配置文件。

mysql5.1升级到mysql5.7(使用yum源)

 

不用卸载原来的mysql,使用"yum update"命令进行升级即可。

mysql5.1升级到mysql5.7(使用yum源)

 

升级过程中,可能会的看到一些提示,比如新生成的配置文件被更名为了/etc/my.cnf.rpmnew,这是因为之前的版本使用的配置文件为/etc/my.cnf,所以升级时,并没有覆盖原来的配置文件,而是将新的默认生成的配置文件重命名了。

mysql5.1升级到mysql5.7(使用yum源)

 

升级完成后,发现无法无法启动mysql。

mysql5.1升级到mysql5.7(使用yum源)

 

查看日志,发现如下错误。

mysql5.1升级到mysql5.7(使用yum源)

 

错误提示:

[ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.

提示我们mysql.user表被损坏了,请执行 mysql_upgrade命令,可是我们并没有做其他操作,只是升级了mysql的版本,为什么mysql.user表会被损坏呢?

其实我们并没有损坏mysql.user表,而是因为在mysql5.7的版本中,默认数据库mysql库中的user表的密码字段发生了变化。

在之前的版本中,我们可以通过修改mysql.user表中的password字段设置数据库用户的密码,但是在mysql5.7中,"password"字段被改为了"authentication_string"字段,由于我们只是升级了mysql程序的版本,原来的数据库文件并没有进行修改,所以,当我们启动mysql5.7时,mysql5.7会对原来的数据库表进行校验,而原来的mysql.user表中使用password字段保存用户的密码,所以,我们需要执行 mysql_upgrade命令,对原来的表结构进行升级,但是,mysql_upgrade命令又必须在数据库启动的情况下才能使用,而启动mysql时又会报这个错误,我们似乎陷入了死循环,我们该怎么办呢?没错,我们需要跳过密码验证的步骤,这样mysql就不会去校验用户的密码了,也就可以在不报上述错误的情况下启动mysql了,所以,我们需要使用跳过密码验证的方式启动mysql,操作如下

 

我们有如下两种方式,可以跳过密码登录。

1、可以在mysql配置文件中的[mysqld]配置区域加入如下配置

skip_grant-tables

2、也可以直接在启动时,加入上述参数,示例如下。

mysqld_safe --skip-grant-tables &

 

我们使用上述第二种方法,尝试启动mysql

mysql5.1升级到mysql5.7(使用yum源)

 
 

启动完成后,端口已经给监听,我们可以尝试登录数据库了。

mysql5.1升级到mysql5.7(使用yum源)

 

无需密码,直接登录mysql数据库,可以发现,版本已经升级到5.7.19,这时我们已经可以查看到之前的数据库了,查看之前的数据库,看到mysql.user表中的表结构并没有发生变化。

mysql5.1升级到mysql5.7(使用yum源)

 

退出mysql客户端,我们即可执行"mysql_upgrade"命令了,示例如下

mysql5.1升级到mysql5.7(使用yum源)

 

执行"mysql_upgrade"命令成功后,即可重启mysqld服务了,由于刚才示例中跳过密码验证的启动方式并没有修改配置文件,所以可以直接重启mysql服务。

mysql5.1升级到mysql5.7(使用yum源)

 

使用升级之前数据库的用户密码,即可正常登录数据库了。

mysql5.1升级到mysql5.7(使用yum源)

 

weinxin
我的微信公众号
关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~
朱双印

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:7   其中:访客  5   博主  2

    • avatar 小土豆 4

      可惜了 就完了 ~~~

      • avatar 风筝 3

        不错,写的真不错,之前不是说要写关于时间点还原的文章的啊,等了很久了

        • avatar 风筝 3

          不错,写的真不错。前面不是说要写关于时间点还原的文章呢,等了好久了,啥时候更新啊。

          • avatar tomyca 1

            哥们,你的博文我全部看完了,今天才评论,真的理解得很透彻,能出几篇关于mysql索引和查询优化的文章吗?

              • avatar 朱双印 Admin

                @tomyca 哥们,其实我也一直在学习数据库的知识,在分享知识之前,我会先尽量搞明白,或者先积累一定的经验,尽力不以其昏昏,使人昭昭,等我的数据库水准更高的时候我会分享这些知识的,一起加油吧~~~

                  • avatar tomyca 1

                    @朱双印 哥们,在哪高就啊? :grin:

                      • avatar 朱双印 Admin

                        @tomyca 高就言过了,我觉得好多人都是不怕累,就怕不开心的那种,公司氛围好,干活累点我愿意,能学到东西就好。