Ubuntu10.04下如何解決修改MySQL的datadir的問題

這篇文章主要介紹Ubuntu 10.04下如何解決修改MySQL的datadir的問題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站專注于高青企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城系統(tǒng)網(wǎng)站開發(fā)。高青網(wǎng)站建設(shè)公司,為高青等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

由于服務(wù)器空間告緊,需要將Ubuntu 10.04下mysql的datadir從默認(rèn)的/var/lib/mysql移到/usr/local/mysql下,操作如下:
1.修改了/etc/mysql/my.cnf,改為:datadir = /usr/local/mysql
2.cp -a /var/lib/mysql /usr/local/
3./etc/init.d/mysql start
 
問題出現(xiàn)了,系統(tǒng)報(bào)錯(cuò)了,無法啟動(dòng)mysql,日志顯示為:Can't find file: "./mysql/plugin.frm'(errno:13)
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
但是執(zhí)行mysql_upgrade時(shí),同樣報(bào)錯(cuò)。
在網(wǎng)上google一圈后,沒有找到解決辦法。
忽然想起,之前在調(diào)試mail server時(shí),修改系統(tǒng)默認(rèn)存儲(chǔ)目錄,需要修改系統(tǒng)的chroot參數(shù),于是決定試下,后面事實(shí)證明就是這個(gè)原因。這里把相關(guān)步驟記錄下,以備需要的朋友共享之。
修改系統(tǒng)的chroot,需要修改/etc/apparmor.d下的相關(guān)文件,這里以mysql為例,需要修改:usr.sbin.mysqld和abstractions/mysql兩個(gè)文件。
1.修改usr.sbin.mysqld里面的兩行內(nèi)容:/var/lib/mysql/ r,改為:/usr/local/mysql/ r,/var/lib/mysql/** rwk,改為:/usr/local/mysql/** rwk,
2.修改abstractions/mysql中一行:/var/lib/mysql/mysql.sock rw,改為:/usr/local/mysql/mysql.sock rw,
3.重新加載apparmor服務(wù):/etc/init.d/apparmor reload
這時(shí)再啟動(dòng)mysql就成功了!
啟示:不只是mysql,如果需要修改其他一些系統(tǒng)自帶軟件的存儲(chǔ)目錄,改了配置之后,仍然報(bào)錯(cuò)的話,則可能需要修改相應(yīng)chroot才行!請(qǐng)參照上面的方法!
關(guān)鍵就下面幾點(diǎn):

    1. 找到 mysql 啟動(dòng)時(shí)加載的 Option File(如果有多個(gè),那么一定是起作用的那一個(gè))。在我的機(jī)器上只有一個(gè),是 "/etc/mysql/my.cnf",進(jìn)去把 datadir 一項(xiàng)的值改成自己指定的目錄。這個(gè)不難。

    2. 最關(guān)鍵的,把原先的數(shù)據(jù)目錄(默認(rèn)是 "/var/lib/mysql")里面的東西都轉(zhuǎn)移到新的目錄下,而且 !一定! 要保證相關(guān)的內(nèi)容在新的目錄下仍然保持跟原來一樣的用戶和權(quán)限設(shè)置。用 chown 和 chmod 就能搞定,很簡(jiǎn)單。但是如果這步出了差錯(cuò),找起來就麻煩了,重新啟動(dòng) mysql 的時(shí)候只會(huì)說連不上,很難發(fā)現(xiàn)真正的原因。我是通過 Ubuntu 下的 Package Manager 安裝的 MySQL,安裝之后相關(guān)文件和目錄的 user name 和 group name 都是 “mysql”,所以新的 datadir 也要將 owner 設(shè)成 mysql,并確保它有合適的權(quán)限。

    3. 不僅要保證 datadir 的用戶/權(quán)限設(shè)置正確,如果 datadir 目錄比較深的話,好像跟上面幾級(jí)目錄的權(quán)限也有關(guān)系??傊?,要保證用戶 “mysql” 能順利地訪問新的 datadir 的內(nèi)容,而且要保證所有必要的內(nèi)容都已被復(fù)制到新的 datadir 下面。在 MySQL 里面,像用戶記錄這種啟動(dòng)時(shí)必需的信息也是以形式保存的, 在啟動(dòng)時(shí)會(huì)加載這些必需的 database,如果相關(guān)目錄的權(quán)限有問題,或者文件根本不存在,都會(huì)啟動(dòng)失敗。

    4. 關(guān)于 AppArmor,網(wǎng)上資料說需要把所做的改動(dòng)通過 profile 文件告訴它,否則 AppArmor 會(huì)阻止 mysql 訪問新的文件路徑而導(dǎo)致 mysql 不能運(yùn)行。以我的經(jīng)驗(yàn)來看,好像沒感覺到 AppArmor 的影響。不過保險(xiǎn)起見,還是按照網(wǎng)上說的,修改一下它的 profile 文件,在我的機(jī)器上是: "/etc/apparmor.d/usr.sbin.mysqld",照著原先 datadir 有關(guān)內(nèi)容的格式,新加幾行:

        /my/new/datadir/ r,
        /my/new/datadir/** rwk,

    5. AppArmor 和 mysql 都需要重啟。重啟的命令是:
      
        sudo /etc/init.d/{apparmor|mysql} stop
        sudo /etc/init.d/{apparmor|mysql} start

    或者用 service 命令也可以:

        sudo service {apparmor|mysql} stop
        sudo service {apparmor|mysql} start

---- TroubleShooting:

   mysql 的 Error log 文件,在我的機(jī)器上是: "/var/log/mysql/error.log",如果出了問題,這里記錄的是真正的原因。對(duì)于終端里的幾行輸出不用太在意,基本上無論出什么事都只會(huì)說連不上Server,沒什么用。

以上是“Ubuntu 10.04下如何解決修改MySQL的datadir的問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

名稱欄目:Ubuntu10.04下如何解決修改MySQL的datadir的問題
文章起源:http://muchs.cn/article16/geohdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、網(wǎng)站內(nèi)鏈、電子商務(wù)域名注冊(cè)、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)