Re: [問題] 修改mysql資料存放位置

作者: kenduest (小州)   2014-10-12 20:50:04
※ 引述《onlyunmandy (曼蒂在雲端)》之銘言:
: 各位好
: 原本的問題已經解決了...
: 但是怎麼解決的我也不曉得= =
: 就一直重複更改動作就可以執行了...
: 我把datadir更改至/home/mysql,但mysql.sock還是在/var/lib/mysql
: (因為mysql.sock複製過去後更改位置他還是自動消失)
: 之前另外一台的設定也是這樣,是沒有問題的
: 但是這台......
: 他沒有抓到我要放的/home/mysql位置
: 儲存位置還是在/var/lib/mysql
: (my.cnf已經更改了喔喔喔~~~目錄權限也有設定)
: 這台的狀況是因為硬碟壞掉重灌了
: 然後廠商重灌後把系統檔分割太小
: 原本的mysql資料檔案過大無法全部回存(早已經放在/home/mysql裡)
: 想說將儲存路徑修改至/home/mysql
: 將權限改好應該就可以了
: 但是一直發生問題...
: 是否有其他方式可以解決?
: 先謝謝大家了~~~ :)
1. mysql.sock 這是 unix domain socket file,簡單說 mysql daemon 啟動的
時候會產生這個檔案,後續相關 client 端要存取 mysql 服務程式的話,於
mysql server 本機 client 端工具最快速的方式就是透過這類檔案與 daemon
溝通就可以了。其他方式就是得走 tcp/ip 的 port 3306 來溝通,若連結的
client 不是在 mysql server 本機上就會用這個方式。
2. mysql 目錄放在 /var/lib/mysql 目錄內,若你要改到其他地方去的話有很多
種的方式。其中一種最簡單就是把 /var/lib/mysql 這個目錄搬移到某個目錄內,
後續建立 symlink 檔案就可以存取使用。ex:
==> mv /var/lib/mysql /home
==> ln -s /home/mysql /var/lib/mysql
(記得 ln -s 之前確認 /var/lib/mysql 目錄已經搬移走或刪除了,要不然
ln -s 會有錯誤結果)
這樣存取 /var/lib/mysql 實際指向 /home/mysql 目錄,所以 my.cnf 檔案也
不需要有任何修改,程式還是會抓取 /var/lib/mysql 目錄,但是最後會應對到
新的目錄去。
若你是自己建立新的 /home/mysql 的話也可以,請注意 permission,owner 與
group 項目就好。比方我這邊機器原本 /var/lib/mysql 的 owner/group 都是
mysql,所以就這樣使用:
my.cnf :
[mysqld]
datadir=/home/mysql
然後...
==> mkdir /home/mysql
==> chown mysql:mysql /home/mysql
==> chmod 600 /home/mysql
若已經有現成的 /home/mysql 目錄要使用,那記得 chown 多個 -R 把目錄內
所有檔案目錄的 owner/group 也一併修正。
3. 目前 centos/rhel based 的 linux 發行版本預設都有啟用 selinux 這個安全
架構環境,所以若你使用這類版本而且有啟用 selinux 的話,手動建立 mysql
db 目錄還不夠,得自己變更一下 security context 設定允許存取。像是:
==> chcon -t mysqld_db_t -R /home/mysql
記得 my.cnf 檔案應該是使用 mysqld_etc_t 這個安全本文,不正確的話
會被禁止存取。不確定可以用 ls -Z 方式觀察...
[kendlee@server /]$ ls -lZ /etc/my.cnf
-rw-r

Links booklink

Contact Us: admin [ a t ] ucptt.com