CentOS7のSELinuxが有効な状態でMySQLのディレクトリをコピーしてきたらMySQLが起動しなくなった場合

/var/lib/mysql以下のディレクトリをバックアップからコピーして復元したり、レプリケーション用の初期データとして別サーバからコピーしてきたりということはよくやる設定ですが、その際に、SELinuxが有効になっているとMySQLがエラーで起動しなくなることがあります。

これは、/var/lib/mysqlディレクトリ以下にSELinuxセキュリティコンテキストのラベルが足らないために起こることが多いです。

以下のコマンドで現在のラベルを確認できるので、起動に失敗した場合は確認してみてください。


ls -lZ /var/lib/mysql

実行結果のファイル一覧でラベルにmysqld_db_tが無かった場合、SELinuxセキュリティコンテキストが足りないということになります。

/var/lib/mysql以下にmysqld_db_tラベルを付加するには次のようにします。


semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"
restorecon -R -v /var/lib/mysql

実行後、ls -lZ /var/lib/mysqlでmysqld_db_tラベルが付いたことを確認できればOKです。

なお、semanageコマンドがインストールされていない場合は以下の方法でインストールできます。


yum -y install policycoreutils-python

以上、技術メモでした。

Twitterでも情報配信中!




コメントを残す

メールアドレスが公開されることはありません。



※コメントは承認制です。承認されるまで表示されません。