MySQL Server は、多くのファイルに対して読取りおよび書込みを行います。 これらのファイルに対して SELinux コンテキストが正しく設定されていない場合、ファイルへのアクセスが拒否される可能性があります。
次の手順では、semanage
バイナリを使用してファイルコンテキストを管理します。RHEL では、これは policycoreutils-python-utils
パッケージの一部です:
yum install -y policycoreutils-python-utils
semanage
バイナリをインストールした後、semanage
と fcontext
オプションを使用して MySQL ファイルコンテキストをリストできます。
semanage fcontext -l | grep -i mysql
デフォルトのデータディレクトリの場所は/var/lib/mysql/
で、使用される SELinux コンテキストは mysqld_db_t
です。
構成ファイルを編集して、データディレクトリまたはデータディレクトリ内の通常のファイル (バイナリログなど) に別の場所を使用する場合は、新しい場所のコンテキストを設定する必要がある場合があります。 例:
semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/datadir(/.*)?"
restorecon -Rv /path/to/my/custom/datadir
semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/logdir(/.*)?"
restorecon -Rv /path/to/my/custom/logdir
RedHat RPM のデフォルトの場所は/var/log/mysqld.log
で、使用される SELinux コンテキストタイプは mysqld_log_t
です。
構成ファイルを編集して別の場所を使用する場合は、新しい場所のコンテキストを設定する必要がある場合があります。 例:
semanage fcontext -a -t mysqld_log_t "/path/to/my/custom/error.log"
restorecon -Rv /path/to/my/custom/error.log
PID ファイルのデフォルトの場所は/var/run/mysqld/mysqld.pid
で、使用される SELinux コンテキストタイプは mysqld_var_run_t
です。
構成ファイルを編集して別の場所を使用する場合は、新しい場所のコンテキストを設定する必要がある場合があります。 例:
semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/pidfile/directory/.*?"
restorecon -Rv /path/to/my/custom/pidfile/directory
Unix ドメインソケットのデフォルトの場所は/var/lib/mysql/mysql.sock
で、使用される SELinux コンテキストタイプは mysqld_var_run_t
です。
構成ファイルを編集して別の場所を使用する場合は、新しい場所のコンテキストを設定する必要がある場合があります。 例:
semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/mysql\.sock"
restorecon -Rv /path/to/my/custom/mysql.sock
5.6.34、5.7.16 および 8.0.11 以降の MySQL バージョンの場合。
MySQL Server RPM をインストールすると、/var/lib/mysql-files/
ディレクトリが作成されますが、SELinux コンテキストは設定されません。 /var/lib/mysql-files/
ディレクトリは、SELECT ... INTO OUTFILE
などの操作に使用されます。
secure_file_priv
を設定してこのディレクトリの使用を有効にした場合、次のようにコンテキストを設定する必要がある場合があります:
semanage fcontext -a -t mysqld_db_t "/var/lib/mysql-files/(/.*)?"
restorecon -Rv /var/lib/mysql-files
別の場所を使用した場合は、このパスを編集します。 セキュリティ上の理由から、このディレクトリはデータディレクトリ内にあってはなりません。
この変数の詳細は、secure_file_priv
のドキュメントを参照してください。