Loading... 在本博客中,”mysql”是一个系列文章,这些文章主要对mysql/mariadb的常用知识点进行了总结,每一篇博客总结的知识点有所不同,具体内容可参考mysql文章列表。 mysql文章列表直达链接:<a href="https://www.zsythink.net/archives/tag/mysql/" target="_blank" rel="noopener">mysql知识点总结</a> <img class=" lazyloaded" title="1480776820928760.jpg" src="https://www.zsythink.net/wp-content/uploads/ueditor/php/upload/image/20161203/1480776820928760.jpg" alt="mysql.jpg" data-src="https://www.zsythink.net/wp-content/uploads/ueditor/php/upload/image/20161203/1480776820928760.jpg" style=""> centos6.x中,如果通过yum安装mysql,mysql的版本默认应该是5.1,如果在使用了一段时间以后,想要通过yum升级到5.7版本,可以参考如下操作。 首先,当前版本的mysql为5.1.73 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_1.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_1.png" style=""> 此处,我们将5.1升级为5.7 注意:在开始操作之前,请完全备份当前数据库,以防升级时出现问题,此处已备份数据库与mysql数据库对应的配置文件,数据库较小可使用mysqldump备份,数据库较大推荐使用xtrabackup备份。 备份完成后,我们开始准备mysql5.7社区版本的yum源。 访问mysql官网下载页面 <span class="external-link"><a class="no-external-link" href="https://www.zsythink.net/wp-content/themes/zibll/go.php?url=aHR0cHM6Ly9kZXYubXlzcWwuY29tL2Rvd25sb2Fkcy9teXNxbC8=" target="_blank"><i data-feather="external-link"></i>https://dev.mysql.com/downloads/mysql/</a></span> 我的操作系统为centos6,所以此处选择的操作系统为redhat <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_2.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_2.png" style=""> 我们其实也可以直接下载对应rpm包升级mysql,但是此处使用yum源进行升级,点击下图中的”Download Now”连接,跳转到yum源安装包界面。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_3.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_3.png" style=""> 在yum源安装包界面,根据自己的版本,选择对应的yum源安装包,点击对应的下载按钮。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_4.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_4.png" style=""> 之后会提示登录对应的oracle账户,使用免费注册的oracle账户登录即可下载。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_5.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_5.png" style=""> 将下载后的rpm包上传到服务器。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_6.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_6.png" style=""> 安装此rpm包即可自动安装mysql5.7的yum源。 # yum install mysql57-community-release-el6-11.noarch.rpm 5.7版本的yum源配置完成后,即可进行升级操作,升级前请再次确定已经备份了数据库与对应的配置文件。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_7.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_7.png" style=""> 不用卸载原来的mysql,使用”yum update”命令进行升级即可。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_8.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_8.png" style=""> 升级过程中,可能会的看到一些提示,比如新生成的配置文件被更名为了/etc/my.cnf.rpmnew,这是因为之前的版本使用的配置文件为/etc/my.cnf,所以升级时,并没有覆盖原来的配置文件,而是将新的默认生成的配置文件重命名了。 <img class="lazyload" src="https://www.zsythink.net/wp-content/themes/zibll/img/thumbnail-lg.svg" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_9.png" style=""> 升级完成后,发现无法无法启动mysql。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_10.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_10.png" style=""> 查看日志,发现如下错误。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_11.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_11.png" style=""> 错误提示: [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 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_12.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_12.png" style=""> 启动完成后,端口已经给监听,我们可以尝试登录数据库了。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_13.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_13.png" style=""> 无需密码,直接登录mysql数据库,可以发现,版本已经升级到5.7.19,这时我们已经可以查看到之前的数据库了,查看之前的数据库,看到mysql.user表中的表结构并没有发生变化。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_14.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_14.png" style=""> 退出mysql客户端,我们即可执行”mysql_upgrade”命令了,示例如下 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_15.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_15.png" style=""> 执行”mysql_upgrade”命令成功后,即可重启mysqld服务了,由于刚才示例中跳过密码验证的启动方式并没有修改配置文件,所以可以直接重启mysql服务。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_16.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_16.png" style=""> 使用升级之前数据库的用户密码,即可正常登录数据库了。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_17.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2017/09/092917_0800_17.png" style=""> 转载自朱双印日志https://www.zsythink.net/archives/2345 Last modification:May 29, 2024 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏