MySQL [Warning] Can’t create test file xxx lower-test(轉)

add by zhj:修改的數據庫的datadir,而後數據庫就沒法啓動了,錯誤以下html

2014-12-11 16:22:57 26309 [Warning] Can't create test file /data/mysql/server2.lower-test
2014-12-11 16:22:57 26309 [Warning] Can't create test file /data/mysql/server2.lower-test
2014-12-11 16:22:57 26309 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)

2014-12-11 16:22:57 26309 [Warning] Buffered warning: Changed limits: table_cache: 431 (requested 2000)

2014-12-11 16:22:57 26309 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13 - Permission denied)
2014-12-11 16:22:57 26309 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

後面找到了這篇文章,解決了問題。另外要說明的是,apparmor不單單限制了mysql的datadir目錄,還限制了config,log等等的目錄。mysql

另外,SELinux之於MySQL 這篇文章也寫的很好。linux

 

原文:http://www.huoxingfan.com/834.htmlsql

我想,你必定是從搜索引擎搜索這個標題進來的!你必定是想改變mysql默認安裝的數據目錄數據庫

你已經修改了my.cnf中的datadir的值安全

你已經chown和chmod了數次新數據目錄或者其父路徑的屬主和權限app

你無數次地試圖service mysql start,或者 /etc/init.d/mysql start,以及mysql_install_db!搜索引擎

恭喜你看見這篇文章,我在被系統坑了幾個小時以後,找到了解決的方法。spa

這個緣由有二,其中任意的一個緣由都會形成你被系統告知這個warning。若是你不是一個專業的linux系統安全工程師,或者你只是個PHP程序操作系統

員,並無對系統安全有深刻的研究,你就不會太容易找到它的答案。

第一,selinux,記得當年唸書時,字符界面安裝redhat(很古老的操做系統麼。。。)的時候,有這麼一個選項,一般你們都聽取前輩的建議,改

變默認值以不安裝它。但若是你剛好要操做的這臺機器開着selinux,它確實可以使你的mysql沒法在新目標位置進行mysql_install_db的操做,並

爆出標題所示的警告。一個簡單的解決辦法是使用命令暫時關閉selinux,以便讓你的操做能夠繼續下去

setenforce 0

但最好使用一個永久方法,以便在重啓後繼續不要這貨。

修改/etc/selinux/config文件中設置SELINUX=disabled ,而後重啓或等待下次重啓。(我用的是Azure的Ubuntu14.04,沒有這個目錄,OK,那就省事了)

 

第二,apparmor,這個坑爹貨和selinux同樣的坑爹,它也對mysql所能使用的目錄權限作了限制

在 /etc/apparmor.d/usr.sbin.mysqld 這個文件中,有這兩行,規定了mysql使用的數據文件路徑權限

/var/lib/mysql/ r,

/var/lib/mysql/** rwk,

你必定看到了,/var/lib/mysql/就是以前mysql安裝的數據文件默認路徑,apparmor控制這裏mysqld可使用的目錄的權限

我想把數據文件移動到/data/mysql下,那麼爲了使mysqld可使用/data/mysql這個目錄,照上面那兩條,增長下面這兩條就能夠了

/data/mysql/ r,

/data/mysql/** rwk,

重啓: sudo service apparmor restart

以後,就能夠順利地幹你想幹的事兒了。

相關文章
相關標籤/搜索