2017-07-06 94 views
1

背景信息:MariaDB更改datadir後無法啓動

我讓CentOS 7安裝程序自動進行分區。

Filesystem    Size Used Avail Use% Mounted on 
/dev/mapper/centos-root 50G 43G 7.9G 85%/
devtmpfs     32G  0 32G 0% /dev 
tmpfs      32G  0 32G 0% /dev/shm 
tmpfs      32G 9.3M 32G 1% /run 
tmpfs      32G  0 32G 0% /sys/fs/cgroup 
/dev/sda1    492M 123M 369M 25% /boot 
/dev/mapper/centos-home 476G 54G 422G 12% /home 
tmpfs     6.3G  0 6.3G 0% /run/user/1000 
tmpfs     6.3G  0 6.3G 0% /run/user/0 

但我沒想到不是大多數的磁盤空間進入到/ root目錄, 和MariaDB的是現在35GB在/ var/lib中/ MySQL的很快用完空間。

所以我改變了datadir的,通過下面的命令,但後來未能啓動

systemctl stop mariadb 
cp -fR /var/lib/mysql /home/ 
chown -R mysql:mysql /home/mysql 

六/etc/my.cnf.d/server.cnf 並添加以下行

[mysqld] 
datadir=/home/mysql 

systemctl啓動MariaDB的

但失敗了,合規約「無法創建測試文件」

Jul 06 22:32:26 ging2 systemd[1]: Starting MariaDB database server... 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [Note] options --log-slow-admin-statements, --log-queries-not-us...s not set 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [Note] /usr/sbin/mysqld (mysqld 10.2.5-MariaDB) starting as process 9450 ... 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [Warning] Can't create test file /home/mysql/ging2.lower-test 
Jul 06 22:32:26 ging2 mysqld[9450]: [87B blob data] 
Jul 06 22:32:26 ging2 mysqld[9450]: 2017-07-06 22:32:26 140114825693312 [ERROR] Aborting 

我不知道爲什麼它不起作用,我認爲權限和所有權與舊數據庫相同。

我認爲你們中的一些人知道爲什麼。那麼有人可以幫忙嗎?

謝謝!

+1

對於初學者,嘗試禁用強制執行SELinux並查看是否有幫助。 – elenst

+0

我試過了,沒有幫助 – kchkg

+0

我可以在/ var/lib /中創建或初始化一個新的數據庫,但不能/ home/xxxx – kchkg

回答

1

這只是我在Debian 8 - > 9升級。無論我嘗試過什麼,我都無法讓MariaDB在/ home下開始我的數據庫。

我能找到的所有答案都改變了AppArmor或SELinux,但都沒有安裝。

問題實際上是systemd,它在MariaDB啓動文件中有一個安全指令,阻止它使用/ home!

的systemd服務文件(在Debian /lib/systemd/system/mariadb.service)包含設置:ProtectHome =真。此設置將防止MySQL寫入/ home下的任何文件夾,因此它將在啓動時拋出ErrNo 13:Permission Denied錯誤。

的修復方法是移動的datadir出/家,或以其他方式關閉該安全功能在systemd服務文件:我修好瞭如下

1:須藤CP /lib/systemd/system/mariadb.service的/ etc/systemd /系統/#使服務文件的本地覆蓋

2:編輯/etc/systemd/system/mariadb.service,改變ProtectHome到假(ProtectHome = fal se)。保存文件

3:須藤systemd守護重裝#刷新systemd服務,它看到你的覆蓋文件

4:須藤systemctl啓動mysql

...,它應該最後開始!!!

如果安裝了AppArmor和SELinux,您還需要處理AppArmor和SELinux,這兩者也會阻止更改MySQL數據目錄。