Ubuntu下更改MySQL資料庫儲存位置

來源:互聯網
上載者:User

MySQL資料庫的檔案結構是怎麼樣的呢,對於這樣子建立的資料庫命令:

CREATE DATABASE mysqldb

在預設的資料庫儲存位置下就會有個檔案夾mysqldb。要操作資料庫首先得停止資料庫進程:

$sudo /etc/init.d/mysql stop

本文以轉移到/home/mysql這個位置為例,下面命令將原有資料庫轉移到新位置(保留原許可權屬性):

$sudo cp –R –p /var/lib/mysql /home/mysql

編輯MySQL設定檔:

$gksu gedit /etc/mysql/my.cnf

在 gedit中找到datadir這一行,將後面等號之後的內容更改為/home/mysql然後儲存退出。自Ubuntu 7.10開始,

Ubuntu就開始使用一種安全軟體叫做AppArmor,這個安全軟體會在你的檔案系統中建立一個允許應用程式訪問的地區(專業術語:應 用程式存取控制)。如果不為MySQL修改AppArmor設定檔,永遠也無法為新設定的資料庫儲存位置啟動

資料庫服務。配置AppArmor:

$sudo nano /etc/apparmor.d/usr.sbin.mysqld

在gedit中找到/var/lib/mysql/這兩行,注釋掉這兩行,在這兩行前分別添加一個符號“#”即可注釋,在這兩行之前或之後加上下面內容:

/home/mysql/ r,
/home/mysql/** rwk,

儲存後退出,執行命令:

$sudo /etc/init.d/apparmor reload

返回Reloading AppArmor profiles : done.即可以重啟MySQL服務:

$sudo /etc/init.d/mysql start

至此MySQL資料庫儲存位置就更改完畢了。

FAQ:

Q:當我運行$sudo /etc/init.d/apparmor reload卻返回資訊

Skipping profile /etc/apparmor.d/usr.sbin.mysqld~
: Warning.

並且也無法啟動MySQL服務,怎麼辦呢?

A:出 現這個問題可能是因為你使用了$sudo gedit或$gksu gedit這樣子的命令來編輯usr.sbin.mysqld這個設定檔的,這兩個圖形介面文字編輯器會在相同位置產生一個 usr.sbin.mysqld~的檔案,從而影響了AppArmor讀取設定檔,出現這個問題先刪除這個usr.sbin.mysqld~檔案:

$sudo rm /etc/apparmor.d/usr.sbin.mysqld~

然後使用$sudo nano這個終端文字編輯器來編輯設定檔即可。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.