web-dev-qa-db-ja.com

SELinuxでMysqlを起動できません

CentOS 6でSELinuxを使用してMySQLを起動しようとしていますが、次のエラーが発生します。

131212 09:08:08 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131212 09:08:58 mysqld_safe Starting mysqld daemon with databases from /u/mysql
131212  9:08:58 [Warning] Can't create test file /u/mysql/webserver.lower-test
131212  9:08:58 [Warning] Can't create test file /u/mysql/webserver.lower-test
^G/usr/libexec/mysqld: Can't change dir to '/u/mysql/' (Errcode: 13)
131212  9:08:58 [ERROR] Aborting

MySQLを他の多くのサーバーでセットアップしましたが、ここでの違いは、mysqldatadirが標準の/vat/lib.mysqlとは異なるパーティションにあることです。代わりに、/ u/mysqlにあります。

これが/etc/my.cnfです

[mysqld]
datadir=/u/mysql
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

max_allowed_packet = 32M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Mysqlディレクトリの権限は次のとおりです

drwxr-xr-x. mysql    mysql    system_u:object_r:mysqld_db_t:s0 mysql

/ u/mysqlディレクトリにあるディレクトリの1つに対する権限は次のとおりです

drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 databasefolder

誰かがこれを修正する方法について何かアイデアがありますか? SELinuxをオフにすると問題が解決することを確認できるので、何らかのSELinuxアクセス許可の問題である必要があります。

ありがとうございました

4
dgibbs

開始する場所は、mysqldに関連するAVC拒否メッセージの/var/log/audit/audit.logを確認することです。これらを audit2why に渡して、何をすべきかを決定するのに役立つ詳細情報を収集できます。

Mysqlファイルが非標準の場所にあり、ディレクトリには正しいコンテキストがありますが、その中のファイルはそうではない可能性があります。これを実現する最良の方法は、/ u/mysqlディレクトリに新しいfcontextを追加することです。

semanage fcontext -a -t mysqld_db_t "/u/mysql(/.*)?"
restorecon -rv /u/mysql

semanage コマンドは、後続の restorecon コマンドがコンテキストをシステムデフォルトに戻さないようにポリシーを構成します。

11
user9517