CentOS 7サーバーにMySQL 5.6をインストールし、エラーログの場所をデフォルトから変更しようとしています/var/log/mysql.log
。/var/log/mysqld.err
デフォルトのファイルの場所を使用するとMySQLが正しく実行されますが、err 13 - Permission Denied
ログファイルの場所を変更しようとするとsystemdサービスは失敗します。ファイルアクセス権と所有者/グループを設定し、次のようにサービスを再起動しました。
chown mysql:mysql /var/log/mysqld.err
chmod 640 /var/log/mysqld.err
systemctl daemon-reload
systemctl restart mysql
しかし、mysqldサービスが出力を/var/log/mysqld.err
。
ファイルアクセス権も777に設定してみました/var/log/mysqld.err
。この場合、mysqld_safe
スクリプトを手動で実行すると、スクリプトはログファイルに正常に書き込むことができますが、すべてのユーザーがファイルを編集できるようにしても、systemdサービスはまだ失敗します。
ファイルアクセス権と所有者/グループ設定に加えて、systemdサービスがアクセスできるファイルを制限する他の設定はありますか?参考までに、私はMySQLリポジトリからインストールされたサービススクリプトを変更せず、サービスの上書きファイルを追加しませんでした。
答え1
SELinux権限の問題については、ABの言葉が正しいです。新しいファイルにはmysqld_log_t
タイプが必要です。タイプを変更して問題を解決しました。
chcon -t mysqld_log_t /var/log/mysqld.err