PostgreSQL and SELinux
PostgreSQLでデフォルトのデータファイル保管ディレクトリ(/var/lib/pgsql/data)以外を使用していたり、デフォルトのポート番号(5432)以外を使用していたりする場合、PostgreSQLの自動起動に失敗してしまう場合があるようです。
pgstartup.log を確認してみると、
postmasterはサーバ設定ファイル"/somedirectory/data/postgresql.conf"にアクセスできません: 許可がありません
というメッセージが。
どうも、これまた、SELinuxの設定に起因するものでした。CentOS で PostgreSQL を使ってみよう!(3) の内容を参考に、設定変更。
semanageコマンドを使用して、対象となるディレクトリのタイプを postgresql_db_t に変更。
# semanage fcontext -a -t postgresql_db_t "/somedirectory/data(/.*)?"
# restorecon -R /somedirectory/data/
設定した内容は、/etc/selinux/targeted/contexts/files/file_contexts.localファイルに保管されています。
※ちなみに、semanageコマンドが見つからない場合は、policycoreutils-pythonパッケージをインストールすればOK。
また、5432以外のポート番号(例:5433)を使用している場合も、semanageコマンドで設定。
# semanage port -a -t postgresql_port_t -p tcp 5433
設定内容を確認する場合は、以下のようにコマンドを実行すればOK。
# semanage port -l
なかなか悩ましいですね・・・。
しかも、シェルから、
/etc/init.d/postgresql startで手動で起動した場合は問題なく起動していたので、気付くのに遅れてしまいました。
#CentOS5の時は、OSセットアップ時にSELinuxを無効にしていましたからねぇ~。
「Linux」カテゴリの記事
- KVMでネットワークをNATにしている場合(2013.01.09)
- snmptrapdでtraphandleが反応しない(2012.10.18)
- SSLInsecureRenegotiation(2012.10.08)
- ntlmaps(2012.10.06)
- ReadyNAS NV+ v2 で Subversion(2012.09.30)
The comments to this entry are closed.
Comments