標籤:style blog http io ar color 使用 sp for
add by zhj:修改的資料庫的datadir,然後資料庫就無法啟動了,錯誤如下
2014-12-11 16:22:57 26309 [Warning] Can‘t create test file /data/mysql/server2.lower-test2014-12-11 16:22:57 26309 [Warning] Can‘t create test file /data/mysql/server2.lower-test2014-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等等的目錄。
SELinux之於MySQL 這篇文章也寫的很好。
原文:http://www.huoxingfan.com/834.html
我想,你一定是從搜尋引擎搜尋這個標題進來的!你一定是想改變mysql預設安裝的資料目錄!
你已經修改了my.cnf中的datadir的值
你已經chown和chmod了數次新資料目錄或者其父路徑的屬主和許可權
你無數次地試圖service mysql start,或者 /etc/init.d/mysql start,以及mysql_install_db!
恭喜你看見這篇文章,我在被系統坑了幾個小時之後,找到瞭解決的方法。
這個原因有二,其中任意的一個原因都會造成你被系統告知這個warning。如果你不是一個專業的linux系統安全工程師,或者你只是個PHP程式
員,並沒有對系統安全有深入的研究,你就不會太容易找到它的答案。
第一,selinux,記得當年念書時,字元介面安裝redhat(很古老的作業系統麼。。。)的時候,有這麼一個選項,通常大家都聽取前輩的建議,改
變預設值以不安裝它。但如果你恰好要操作的這台機器開著selinux,它確實能夠使你的mysql無法在新目標位置進行mysql_install_db的操作,並
爆出標題所示的警告。一個簡單的解決辦法是使用命令暫時關閉selinux,以便讓你的操作可以繼續下去
setenforce 0
但最好使用一個永久方法,以便在重啟後繼續不要這貨。
修改/etc/selinux/config檔案中設定SELINUX=disabled ,然後重啟或等待下次重啟。
第二,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,
重啟apparmor,/etc/inid.d/apparmor restart
之後,就可以順利地幹你想乾的事兒了。
MySQL [Warning] Can’t create test file xxx lower-test(轉)