Ubuntu下MySQL版本升级

起因

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

Ubuntu下MySQL版本升级_第1张图片
CURRENT_TIMESTAMP

可以在我们创建或者更新此条数据的时候,自动将时间戳记录,但是当我们选择之后,会有如下提示
Ubuntu下MySQL版本升级_第2张图片
错误提示

上网查看了一下类似的错误,基本是由于使用的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

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


Ubuntu下MySQL版本升级_第3张图片
MySQL安装

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

  • 更新
sudo apt-get update
  • 安装
sudo apt-get install mysql-server
  • 检查
    最后我们需要检查一下数据是否ok,一般是使用mysql_upgrade命令来完成,但是万恶的是,这是一个很久未使用的数据库,忘了root密码了,还需要重置一下密码。
    首先使用无需密码登录
    找到配置文件,一般是在/etc/mysql下面
    Ubuntu下MySQL版本升级_第4张图片
    配置文件

    可见,升级之后,备份了之前的配置,并且生成了一个新的配置文件my.cnf
    Ubuntu下MySQL版本升级_第5张图片
    my.cnf

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

Ubuntu下MySQL版本升级_第6张图片
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版本升级)