CentOS 7 & MariaDB 10.1でdatadirを/home配下にすると起動できない

CentOS 7 & MariaDB 5.5でdatadirを/home配下にして運用していたものを、CentOS 7 & MariaDB 10.1にアップグレードしたらMariaDBが起動できなくなりました。

  • SELinuxは無効にしてある
  • ディレクトリのパーミッションは正しい
  • ディレクトリのオーナー・グループは正しい

何が問題なのか?見当もつかないので頭を抱えてしまいました。ふと、systemdのMaridDB用Unitファイル(/usr/lib/systemd/system/mariadb.service)を覗いてみたら気になる記述を発見しました。

# Prevent accessing /home, /root and /run/user
ProtectHome=true

"ProtectHome=true"というキーワードをググってみるとMariaDB 10.1.16 datadirをhome配下にした場合にsystemdで起動しないがヒットしました。まさにこれだ...。

Sysyemdの仕様として正しい動きになるようです。ただ、バージョンアップの度に「ProtectHome=false」と書き換えるのは嫌なので、datadirを標準の/var/lib/mysqlに戻しました。SELinuxにしても標準ディレクトリ以外でファイルの読み書きをさせようとブロックされてしまうので、特別な理由が無い限りは標準ディレクトリで運用した方が良さそうです。