在linux中碰到提示mysql提示[Warning] Cant create test file xxx lower-test了,下面有碰到此類問題的朋友一起來看看解決辦法.
我想,你一定是從搜索引擎搜索這個標(biāo)題進來的,你一定是想改變mysql默認安裝的數(shù)據(jù)目錄,你已經(jīng)修改了my.cnf中的datadir的值,首先是查看數(shù)據(jù)庫日志.
- mysqld started
- [Warning] Can't create test file xxx.lower-test
- [Warning] Can't create test file xxx.lower-test
- /usr/libexec/mysqld: Can't change dir to '/xxx' (Errcode: 13)
- [ERROR] Aborting
你已經(jīng)chown和chmod了數(shù)次新數(shù)據(jù)目錄或者其父路徑的屬主和權(quán)限,你無數(shù)次地試圖service mysql start,或者 /etc/init.d/mysql start,以及mysql_install_db!
恭喜你看見這篇文章,我在被系統(tǒng)坑了幾個小時之后,了解決的方法.
這個原因有二,其中任意的一個原因都會造成你被系統(tǒng)告知這個warning,如果你不是一個專業(yè)的linux系統(tǒng)安全工程師,或者你只是個PHP程序員,并沒有對系統(tǒng)安全有深入的研究,你就不會太容易找到它的答案.
第一,selinux,記得當(dāng)年念書時,字符界面安裝redhat,很古老的操作系統(tǒng)的時候,有這么一個選項,通常大家都聽取前輩的建議,改變默認值以不安裝它。但如果你恰好要操作的這臺機器開著selinux,它確實能夠使你的mysql無法在新目標(biāo)位置進行mysql_install_db的操作,并爆出標(biāo)題所示的警告。一個簡單的解決辦法是使用命令暫時關(guān)閉selinux,以便讓你的操作可以繼續(xù)下去
setenforce 0
但最好使用一個永久方法,以便在重啟后繼續(xù)不要這貨.
修改/etc/selinux/config文件中設(shè)置SELINUX=disabled,然后重啟或等待下次重啟.
第二,apparmor,這個坑爹貨和selinux一樣的坑爹,它也對mysql所能使用的目錄權(quán)限做了限制,在 /etc/apparmor.d/usr.sbin.mysqld 這個文件中,有這兩行,規(guī)定了mysql使用的數(shù)據(jù)文件路徑權(quán)限.
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
你一定看到了,/var/lib/mysql/就是之前mysql安裝的數(shù)據(jù)文件默認路徑,apparmor控制這里mysqld可以使用的目錄的權(quán)限,我想把數(shù)據(jù)文件移動到/data/mysql下,那么為了使mysqld可以使用/data/mysql這個目錄,照上面那兩條,增加下面這兩條就可以了.
/data/mysql/ r, //Vevb.com
/data/mysql/** rwk,
重啟apparmor,/etc/inid.d/apparmor restart,之后,就可以順利地干你想干的事兒了.
新聞熱點
疑難解答
圖片精選