在centOS7中,mysql數據庫文件默認放在/var/lib,有時候這個分區比較小,需要將其遷移到比較大的分區,方法如下
1、停掉mysql服務,將/var/lib/mysql目錄復制到新的目錄中,例如/home/mysql
cp -R /var/lib/mysql /home/
2、修改/etc/my.conf,找到如下兩行:
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
改成
datadir=/home/mysql
socket=/home/mysql/mysql.sock
3、這個時候如果重啟mysql服務會報錯:
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
在安裝mysql時建立了一個mysql用戶和mysql用戶組,存儲文件的目錄/var/lib/mysql就是數據這個mysql用戶的,而遷移過去后,/home/mysql屬於root用戶和root用戶組(這取決於用什么賬戶登錄centOS。就本例來說只可能屬於root用戶,因為一般用戶沒有權限在/home中進行寫操作),mysql肯定沒權限操作屬於root的文件,所以就報錯。
修改/home/mysql目錄以及下面所有文件的屬性,讓它們屬於mysql用戶
chown -R mysql:mysql \home\mysql
4、完成以上步驟后仍然不能啟動mysql服務,原因是selinux的限制,把它關掉,修改/etc/selinux/config文件:
SELINUX=disabled
最后重啟mysql服務
