1. 程式人生 > >成功在ubuntu下移動mysql資料庫

成功在ubuntu下移動mysql資料庫

乍看標題,似乎這是一篇沒有任何技術含量的轉貼,但是,卻恰恰相反,本文就是為了抨擊這種不負責的轉貼而寫。

由於/var分割槽空間小,於是想把mysql的資料庫移動到/home下,這個很簡單(對,群里人也都說很簡單,大家都說很簡單),google了一下一堆的文章,找了個比較權威的來搞,如下:

http://database.51cto.com/art/200905/125833.htm

但是到最後一步啟動mysql的時候卻接到了一個faild,檢視日誌,發現有如下提示:

Aug 10 09:18:26 localhost mysqld[9751]: 090810  9:18:26  InnoDB: Operating system error number 13 in a file operation.
Aug 10 09:18:26 localhost mysqld[9751]: InnoDB: The error means mysqld does not have the access rights to
Aug 10 09:18:26 localhost mysqld[9751]: InnoDB: the directory.
Aug 10 09:18:26 localhost mysqld[9751]: InnoDB: File name ./ibdata1
Aug 10 09:18:26 localhost mysqld[9751]: InnoDB: File operation call: 'open'.
Aug 10 09:18:26 localhost mysqld[9751]: InnoDB: Cannot continue operation.



看來是許可權的問題,索性將chmod 777給了/home/mysql,但是,沒有任何起色。

在google上搜索相關的文章,最後在一個bug貼中找到了一個臨時解決辦法:aa-complain mysqld,一個鴕鳥策略。

但是,好景不長,當我用apt-get重新配置mysql的時候(比如安裝了外掛,則自動配置mysql),問題又回來了,看來,這個腦袋還得從土裡拿出來。

問題定為到了apparmor上,但是在上述教程中已經將/etc/apparmor.d/usr.sbin.mysqld的相關目錄做了修改,難道其它的地方還有嗎?死馬當活馬醫,拿出find+grep大法,在/etc/apparmor搜尋所有跟/var/lib/mysql(原來的mysql資料庫目錄)有關的配置,果不其然,最後在/etc/apparmor.d/abstractions/mysql找到了

/var/lib/mysql/mysql.sock rw,


這麼一行,看來應該是問題的癥結所在了。將其註釋掉,並增加一句:

/home/mysql/mysql.sock rw,

儲存退出重啟mysql和apparmor,哈哈,問題解決了。

後記:但一直到最後把問題搞定,也沒有在google上搜到關於這個隱藏配置的文章,大把大把的篇幅都是被機械的轉載再轉載,不得不說這是技術界的悲哀...