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這個終端文本編輯器來編輯配置文件即可。