MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  SELinux ファイルコンテキスト

6.7.4 SELinux ファイルコンテキスト

MySQL Server は、多くのファイルに対して読取りおよび書込みを行います。 これらのファイルに対して SELinux コンテキストが正しく設定されていない場合、ファイルへのアクセスが拒否される可能性があります。

次の手順では、semanage バイナリを使用してファイルコンテキストを管理します。RHEL では、これは policycoreutils-python-utils パッケージの一部です:

yum install -y policycoreutils-python-utils

semanage バイナリをインストールした後、semanagefcontext オプションを使用して MySQL ファイルコンテキストをリストできます。

semanage fcontext -l | grep -i mysql

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

MySQL エラーログファイルコンテキストの設定

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 ファイルコンテキストの設定

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 ドメインソケットコンテキストの設定

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

secure_file_priv ディレクトリコンテキストの設定

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 のドキュメントを参照してください。


関連キーワード:  コンテキスト, 設定, mysqld, 認証, 場所, パスワード, var, インストール, プラガブル, 監査