美文网首页
Ubuntu下MySQL版本升级

Ubuntu下MySQL版本升级

作者: 两句挽联 | 来源:发表于2018-10-10 09:40 被阅读0次

    起因

    今天在写一些小项目的时候,在创建表的时候用到了两个字段,createTimeupdateTime,用于表示条目的创建和更新时间。为了偷懒,决定使用MySQL的CURRENT_TIMESTAMP这个特性,如:

    CURRENT_TIMESTAMP
    可以在我们创建或者更新此条数据的时候,自动将时间戳记录,但是当我们选择之后,会有如下提示
    错误提示
    上网查看了一下类似的错误,基本是由于使用的MySQL版本过旧的原因,于是使用select version()查看了一下版本,显示为5.5.58-0ubuntu0.14.04.1-log,最近的版本已经到了5.7,所以,是有必要升级一下了。

    准备

    升级之前,最好将数据库的数据备份一下,以备不时之需

    mysqldump -uroot -p'jianshu.com' --all-databases > all_databases.sql
    

    操作步骤

    由于我们使用的是Ubuntu,自然要依赖apt-get命令来完成升级

    • 下载源配置
    wget https://dev.mysql.com/get/mysql-apt-config_0.8.1-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.1-1_all.deb
    

    会有提示框弹出来供选择,类似


    MySQL安装

    由于需要和现网环境适配,我们选择使用MySQL Server的5.6的版本即可

    • 更新
    sudo apt-get update
    
    • 安装
    sudo apt-get install mysql-server
    
    • 检查
      最后我们需要检查一下数据是否ok,一般是使用mysql_upgrade命令来完成,但是万恶的是,这是一个很久未使用的数据库,忘了root密码了,还需要重置一下密码。
      首先使用无需密码登录
      找到配置文件,一般是在/etc/mysql下面
      配置文件
      可见,升级之后,备份了之前的配置,并且生成了一个新的配置文件my.cnf
      my.cnf

    其内容就是将conf.dmysql.conf.d文件夹里面后缀为cnf的文件内容全部引入。经过查看,我们定位到了平常使用的配置文件,其在mysql.conf.d中,名字为mysqld.cnf

    mysqld.cnf

    可见,新的配置文件里面只有简单mysqld的一些配置,注意上面socket配置,其值和一般使用的不一样,后面我们在本机使用mysql客户端的时候可能会有一些socket不存在的提示,在此,我们可以提前创建一个软链接

    ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
    

    言归正传,我们需要在mysqld的配置下面,增加一行skip-grant-tables,用于无密码登录,保存退出后重启mysql服务,即可以直接通过mysql命令直接登入。

    登入之后,可以直接通过修改库中的密码来实现重置

    
    mysql> use mysql
    Database changed
    mysql> update user set Password= password("123456") where user = "root";
    Query OK, 7 rows affected (0.00 sec)
    Rows matched: 7  Changed: 7  Warnings: 0
    
    

    如上,将所有root密码均修改为123456。

    回到我们的主题,由于新版本里面的一些表结构可能和老版本不一致,所以我们通过mysql_upgrade命令来升级,这一步非常重要

    sudo mysql_upgrade -u root -p'www.jianshu.com' 
    

    至此,所有升级操作均已完成

    相关文章

      网友评论

          本文标题:Ubuntu下MySQL版本升级

          本文链接:https://www.haomeiwen.com/subject/poguaftx.html