起因
今天在寫一些小項目的時候,在創(chuàng)建表的時候用到了兩個字段,createTime
和updateTime
,用于表示條目的創(chuàng)建和更新時間嚷堡。為了偷懶,決定使用MySQL的CURRENT_TIMESTAMP
這個特性艇棕,如:
可以在我們創(chuàng)建或者更新此條數(shù)據(jù)的時候蝌戒,自動將時間戳記錄,但是當我們選擇之后沼琉,會有如下提示
上網(wǎng)查看了一下類似的錯誤北苟,基本是由于使用的MySQL版本過舊的原因,于是使用
select version()
查看了一下版本打瘪,顯示為5.5.58-0ubuntu0.14.04.1-log
友鼻,最近的版本已經(jīng)到了5.7,所以闺骚,是有必要升級一下了彩扔。
準備
升級之前,最好將數(shù)據(jù)庫的數(shù)據(jù)備份一下僻爽,以備不時之需
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
會有提示框彈出來供選擇,類似
由于需要和現(xiàn)網(wǎng)環(huán)境適配胸梆,我們選擇使用MySQL Server的5.6的版本即可
- 更新
sudo apt-get update
- 安裝
sudo apt-get install mysql-server
- 檢查
最后我們需要檢查一下數(shù)據(jù)是否ok敦捧,一般是使用mysql_upgrade
命令來完成须板,但是萬惡的是,這是一個很久未使用的數(shù)據(jù)庫兢卵,忘了root密碼了习瑰,還需要重置一下密碼。
首先使用無需密碼登錄
找到配置文件秽荤,一般是在/etc/mysql下面
可見甜奄,升級之后,備份了之前的配置王滤,并且生成了一個新的配置文件my.cnf
其內(nèi)容就是將conf.d
和mysql.conf.d
文件夾里面后綴為cnf的文件內(nèi)容全部引入贺嫂。經(jīng)過查看滓鸠,我們定位到了平常使用的配置文件雁乡,其在mysql.conf.d
中,名字為mysqld.cnf
可見糜俗,新的配置文件里面只有簡單mysqld的一些配置踱稍,注意上面socket
配置,其值和一般使用的不一樣悠抹,后面我們在本機使用mysql客戶端的時候可能會有一些socket不存在的提示珠月,在此,我們可以提前創(chuàng)建一個軟鏈接
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
言歸正傳楔敌,我們需要在mysqld的配置下面啤挎,增加一行skip-grant-tables
,用于無密碼登錄卵凑,保存退出后重啟mysql服務(wù)庆聘,即可以直接通過mysql
命令直接登入。
登入之后勺卢,可以直接通過修改庫中的密碼來實現(xiàn)重置
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。
回到我們的主題黑忱,由于新版本里面的一些表結(jié)構(gòu)可能和老版本不一致宴抚,所以我們通過mysql_upgrade
命令來升級,這一步非常重要
sudo mysql_upgrade -u root -p'www.reibang.com'
至此甫煞,所有升級操作均已完成