MySQL 5.6 和 SELinux 正在爭論

MySQL 5.6 和 SELinux 正在爭論

CentOS 6.4(x64)/MySQL 5.6.10

從來源檔案安裝 MySQL 並在其原始位置(/var/lib/mysql)下正常啟動。我將所有內容移至不同的捲 (/u0/mysql),並經歷了幾輪將其從 SELinux 中豁免的過程(cat /var/log/audit/audit.log | audit2allow -M mysql-*後跟semodule -i mysql-*.pp)。每一輪之後,我嘗試重新啟動服務並看到此錯誤:

Starting MySQL..The server quit without updating PID file (/u0/mysql/server.pid).
 [FAILED]

經過 3-4 輪添加豁免後,我注意到文件不再改變。 IE 中所有可以透過這種方式添加的東西都已經被添加了。出於好奇,我跑過去audit2why -a得到了很多:

type=AVC msg=audit(1387207317.009:666): avc:  <some permission> for  pid=20640 
  comm="mysqld" dev=sdc1 ino=36831373 scontext=unconfined_u:system_r:mysqld_t:s0 
  tcontext=system_u:object_r:default_t:s0 tclass=file
 Was caused by:
     Unknown - would be allowed by active policy
     Possible mismatch between this policy and the one under which the audit message was generated.
     Possible mismatch between current in-memory boolean settings vs. permanent ones.

這讓我相信應該正在工作。如果我停用 SELinux:setenforce 0那麼 mysql 將正常啟動,因此它(SE)仍然會妨礙。

順豐搜尋翻了up - 已經嘗試過,結果沒有改變。

SO:如何找出堵塞的位置?

編輯:

[root@server u0]# ls -ldZ /var/lib/mysql
drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 /var/lib/mysql

[root@server u0]# ls -ldZ /u0/mysql
drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 /u0/mysql

答案1

您需要將新目錄的安全上下文變更為與 /var/lib/mysql 相同。

例如:

ls -ldZ /var/lib/mysql/
drwxr-x--x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql/

然後使用 chcon 將新目錄更改為相同的設置

chcon -R -u system_u -r object_r -t mysqld_db_t /u0/mysql

答案2

你也可以嘗試這樣的事情:

chcon --reference=/path/to/existing/file /path/to/new/file

順便說一句,這裡有一個關於 SELinux 的精彩介紹:http://www.youtube.com/watch?v=MxjenQ31b70來自 Redhat 2012 高峰會。另外,請在日誌檔案中尋找/var/log/audit/audit.log或中的錯誤訊息/var/log/messages

相關內容