2013-04-07

Mysql 升級

CMS 架站軟體現在是不是沒那麼熱門了呀。最近不得不做一個網站,沒想到 xoops 被騙了,竟然願意讓我安裝,畢竟我的 mysql 版本不合格呀。現在大家都要求 mysql 版本要到 5 才行,我的只有 4 點多,不升級就玩不下去。這個之前無解的問題,在暫時休工的此刻,想說還是來解決一下。沒想到解決了。

這些事情一直都是似懂非懂、依樣畫胡蘆,現在還是一樣。之前解決不了時,乾脆試裝 debian 的版本,所以解決的過程中,也碰到這個殘存遺跡的問題,幸好還記得似乎有這件事。

先前之所以升級不成功,似乎是因為以為只要把新的資料夾連過去就好了。什麼叫做連過去?apach、php、mysql 這些,安裝編譯時,都要給路徑,在無數次的安裝經驗之後知道,這些不同版本可以同時存在,只要把想用的那個版本 ln -s 到當初給的路徑名稱就好了。所以傻傻地連過去,卻永遠無法啟動。原來除了更改權限什麼的之外,還要做這件事:
/path/to/mysql# scripts/mysql_install_db
不過對我來說這還不夠,它會出現
mysql FATAL ERROR: Could not find mysql
這是因為之前裝了 debian 的版本,在別的地方留存了不該有的東西,但又不敢亂殺,畢竟在有它的情形下,原來的 mysql 還活得好好的。所以就這樣:
/etc/mysql# cp -p my.cnf my.cnf.org
/path/to/mysql# cp -p support-files/my-my-medium.cnf /etc/mycql/my.cnf.mysql5
前者可以啟動原來的 mysql,後者可以啟動新的,要啟動哪個,就把它抄到 /etc/mysql/my.cnf。

總之這樣就可以啟動新版本的 mysql。之前都在耍笨不是嗎。

但這樣問題還沒結束。還要搬資料庫。

搬資料庫

先啟動舊的 mysql。然後打一行匯出資料庫的指令:
/path/to/mysql/data# mysqldump -p --all-databases > x.sql (名字自取)
Enter password: 
填入密碼後,關掉 mysql(mysqladmin -p shutdown,一樣會問密碼)。接著啟動新的 mysql,先把資料庫裡的現有資料夾(test 和 mysql)搬到別的地方,接著匯入資料庫:
/path/to/mysql/data# mysql -p < x.sql
一樣會問密碼。這樣就解壓縮了。接著怕有不測,就先把 test 和 mysql 兩個必備資料夾搬到別處,再把它本尊的搬回來。其實我不知道這些資料庫裡面裝什麼。或許不搬來搬去就不會遇到下一個問題。

下一個問題是,舊 mysql 裡的資料庫,都另有 user,搬過來之後,那些 user 的權限都不見了,只認得 root,這樣以前做的網站就都打不開了。心生一計,那就再給一次權限就好了:
/path/to/mysql# mysql -p
Enter password:
msqyl> GRANT ALL PRIVILEGES ON 資料庫名稱.* To 帳號@localhost IDENTIFIED BY '密碼';
這樣網頁就開起來了。喜形於色。

No comments:

Post a Comment