2done.org

Linuxメインなメモ書き。二度寝してから書く。(ご意見は Twitter あたりで。そのうちコメント欄つけます。)

Apache から外部データベースにつなぐ

2010/12/17

 

SELinux を有効にした状態で Apache(httpd_t) が外部のデータベースにつなぐことが禁止されています。(デフォルト)

 

前提

# restorecon -RF /var/www/html
$ mysql -h 192.168.150.134 -u joomla -p

 

Joomla! を使う場合(インストール画面)

CMS の Joomla! をインストールする場合、データベース接続時に次のようなエラーが出力されます。

 

※接続先データベース設定画面

 

※ 接続拒否画面。正常に認証が通った場合は、FTP 設定画面に遷移します。

 

audit.log の確認

/var/log/audit/audit.log を確認します。

type=AVC msg=audit(1292538483.033:14621): avc:  denied  { name_connect } for  pid=19654 comm="httpd" dest=3306 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket

 

httpd_t が tcp_socket の特定ポートに接続することが拒否されています。

 

boolean 値の設定

これを解決するには boolean 値 (httpd_can_network_connect_db) を変更します。

# getsebool httpd_can_network_connect_db
httpd_can_network_connect_db --> off
# setsebool -P httpd_can_network_connect_db 1
# getsebool httpd_can_network_connect_db
httpd_can_network_connect_db --> on

 

これで無事接続ができるようになります。