如果你使用的MySQL版本很旧,或者需要升级MySQL版本那就跟着本文一起操作吧。我们在Ubuntu操作系统中实战升级MySQL版本。
背景 在写一些小项目的时候,在创建表的时候用到了两个字段,createTime和updateTime,用于表示条目的创建和更新时间。为了偷懒,决定使用MySQL的CURRENT_TIMESTAMP这个特性,如:
可以在我们创建或者更新此条数据的时候,自动将时间戳记录,但是当我们选择之后,会有如下错误提示:
查看了一下类似的错误,基本是由于使用的MySQL版本过旧的原因,于是使用select version()查看了一下版本,显示为5.5.58-0ubuntu0.14.04.1-log,最近的版本已经到了MySQL 5.7,所以,是有必要升级一下MySQL了。
准备 升级之前,最好将数据库的数据备份一下,以备不时之需(请注意更改ywnz): mysqldump -uroot -p'ywnz.com' --all-databases > all_databases.sql
操作步骤 由于我们使用的是Ubuntu,自然要依赖apt-get命令来完成升级。 1.下载源配置 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的版本即可。 2.更新 sudo apt-get update 3.安装 sudo apt-get install mysql-server 4.检查 最后我们需要检查一下数据是否ok,一般是使用mysql_upgrade命令来完成,但是问题来了,这是一个很久未使用的数据库,忘了root密码了,还需要重置一下密码。 首先使用无需密码登录,找到配置文件,一般是在/etc/mysql下面:
可见,升级之后,备份了之前的配置,并且生成了一个新的配置文件my.cnf:
其内容就是将conf.d和mysql.conf.d文件夹里面后缀为cnf的文件内容全部引入。经过查看,我们定位到了平常使用的配置文件,其在mysql.conf.d中,名字为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。 5.回到我们的主题,由于新版本里面的一些表结构可能和老版本不一致,所以我们通过mysql_upgrade命令来升级,这一步非常重要(请注意更改ywnz): sudo mysql_upgrade -u root -p'ywnz.com' 至此,所有升级操作已经全部完成。
相关主题 |