MariaDB 10.0 對(duì)應(yīng) Mysql 5.6
MariaDB 10.1 對(duì)應(yīng) Mysql 5.7
升級(jí)的正確姿勢(shì):
使用mysql_upgrade升級(jí)疟游,參考下面的文章
【MySQL版本升級(jí)之5.6到5.7】?https://www.cnblogs.com/Bccd/p/5987426.html
前言:
調(diào)試某項(xiàng)目,遇到數(shù)據(jù)庫(kù)兼容的問(wèn)題厨钻。
查詢 json_extract does not exist ,得知是mysql版本要 >5.7
項(xiàng)目是用寶塔運(yùn)維的,有升級(jí)數(shù)據(jù)庫(kù)版本的選項(xiàng)。直接使用,
不能登錄ssh敬察,因?yàn)槊子忻艽a。此路不通尔当。再找莲祸,寶塔中有升級(jí)數(shù)據(jù)庫(kù)的功能。先要備份(主動(dòng))數(shù)據(jù)椭迎,刪數(shù)據(jù)锐帜,再升級(jí),恢復(fù)數(shù)據(jù)畜号。
有些服務(wù)器是1G內(nèi)存下的缴阎,需要先這樣操作。
打開(kāi)文件:/www/server/panel/class/panelPlugin.py
然后把這行if語(yǔ)句注釋掉简软,如下圖
等待他的任務(wù)跑完~~~(一杯咖啡的時(shí)間)
帶著期望運(yùn)行蛮拔,然并卵。寶塔上看痹升,服務(wù)沒(méi)有啟動(dòng)建炫。手動(dòng)啟動(dòng)~不成功。要來(lái)服務(wù)器登錄賬號(hào)疼蛾,開(kāi)始了折騰之路肛跌。
一:?jiǎn)?dòng)
1.1查看mysql 啟動(dòng)狀態(tài):
systemctl status mysqld.service
若是顯示紅色的failed,則是啟動(dòng)失敗的察郁。根據(jù)它的報(bào)錯(cuò)衍慎,查詢問(wèn)題原因:
排查了很多錯(cuò)誤,繞來(lái)繞去皮钠,一頭霧水稳捆。最后發(fā)現(xiàn):
1)沒(méi)有my.cof文件中指定的data文件夾不存在,手動(dòng)建立鳞芙。然后用以下命令初始化眷柔,mysqld --initialize --user=root --console期虾,
2)命令報(bào)錯(cuò)原朝,看來(lái)是寶塔升級(jí)了mysql但是沒(méi)能更新系統(tǒng)的mysqld。找到安裝的目錄镶苞。用全路徑運(yùn)行試試喳坠。/www/server/mysql/bin/mysqld / --initialize --user=root --console ;命令運(yùn)行成功了茂蚓,查看/www/server/data文件夾壕鹉,里面有一系列初始化的文件剃幌。這里就是我們的數(shù)據(jù)庫(kù)存放文件的地方了。
3)將data文件夾的權(quán)限改為mysql的晾浴,chown mysql.mysql data/
4)直接用 /www/server/mysql/bin/mysqld start 啟動(dòng)负乡,報(bào)錯(cuò)Too many arguments (first extra is 'restart');缺少指定用戶的參數(shù)脊凰。改為這樣啟動(dòng)成功: /etc/rc.d/init.d/mysqld --initialize --user=root --console
最后一句是生成的臨時(shí)登錄密碼:A temporary password is generated for root@localhost: u(xV:Bfjz5gn
Ps:如果啟動(dòng)報(bào)端口占用抖棘,netstat -tunlp |grep 3306就查一下端口3306被那個(gè)占用了,kill -9 掉狸涌。
二:用戶權(quán)限
2.1 MySQL 5.7之后也不再像MySQL 5.6那樣默認(rèn)提供一個(gè)沒(méi)有密碼的管理員賬號(hào)root切省,而是生成一個(gè)臨時(shí)的密碼供你登錄,登錄后需要修改帕胆,必須修改后才能進(jìn)行后續(xù)操作朝捆。
Mysql -uroot -pu(xV:Bfjz5gn?//登錄
2.2 使用新密碼登錄,新建用戶懒豹,與之前備份的數(shù)據(jù)庫(kù)用戶/密碼一致起來(lái)芙盘,防止不可知的問(wèn)題發(fā)生。
修改命令:
alter user 'root'@'localhost' identified by '[yourpassword]'??
update user set password=password('7riasXrnzMXLNyBS') where user='root' and host=‘%’; //5.7不可用了
新版的mysql數(shù)據(jù)庫(kù)下的user表中已經(jīng)沒(méi)有Password字段了脸秽,將加密后的用戶密碼存儲(chǔ)于authentication_string字段何陆。
update mysql.user set authentication_string=password('7riasXrnzLNyBS') where user='root' and Host = '%';
grant all privileges on *.* to?`root`@"%" ;??//授權(quán)
flush privileges;??//刷新權(quán)限
三:數(shù)據(jù)恢復(fù)
3.1 使用修改后的的密碼登錄數(shù)據(jù)庫(kù),建立空的數(shù)據(jù)庫(kù)豹储,如crm
Mysql -uroot -p7riasXrnzLNyBS
> ?CREATE DATABASE crm;
> quit; ?//退出
導(dǎo)入之前備份的數(shù)據(jù):
Mysql -uusername -ppassword [dbname] < filename.sql
參數(shù)說(shuō)明:
Username贷盲,表示登錄的用戶名
password,表示用戶的密碼
dbname剥扣,表示要還原的數(shù)據(jù)庫(kù)名稱
如果巩剖,使用mysqldump命令,備份到filename.sql文件中钠怯,包含創(chuàng)建數(shù)據(jù)庫(kù)的語(yǔ)句佳魔,則不需要指定數(shù)據(jù)庫(kù),因此晦炊,還原數(shù)據(jù)庫(kù)之前鞠鲜,必須先創(chuàng)建數(shù)據(jù)庫(kù)。
這種方式断国,只是其中的一種
還可以登錄到MySQL數(shù)據(jù)庫(kù)贤姆,適應(yīng)source命令,還原數(shù)據(jù)庫(kù)
Source filename.sql
source命令稳衬,比較簡(jiǎn)單霞捡,只需要指定導(dǎo)入文件的名稱,以及路徑即可
3.2 備份
基本命令:
mysqldump ?-u username -p dbname table1 table2...->BackupName.sql;
備份crm庫(kù)
mysqldump ?-uroot -pcrm ->crmDB.sql;
>Enter password: ***
多個(gè)數(shù)據(jù)庫(kù):
mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql