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)はまだ邪魔になっています。
SFを検索すると this 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
新しいディレクトリのセキュリティコンテキストを/ 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
次のようなことも試すことができます。
chcon --reference=/path/to/existing/file /path/to/new/file
ところで、ここにSELinuxのすばらしい紹介があります: http://www.youtube.com/watch?v=MxjenQ31b7 Redhat 2012Summitから。また、ログファイルで/var/log/audit/audit.log
または/var/log/messages
のエラーメッセージを確認してください。