外部DB(PostgreSQL)に接続する方法

外部のデータベース(PostgreSQL)に接続する必要が出てきたので、その備忘録です。

スポンサーリンク

外部DB(PostgreSQL)に接続する手順は、以下の4つです。

データベースを持つ側(接続をされる側)のサーバー設定

1:listen_addressesの修正

2:データベース(PostgreSQL)のPortを開放

3:接続を許可するIPの追記

4:Iptablesの修正

まずは、listen_addressesの修正から。

listen_addressesの修正は、postgresql.conf を修正します。

postgresql.confはおそらく /var/lib/pgsql/data/postgresql.conf あたりにあるので、vimで修正していきます。

listen_addressesはPosqgreSQLのサーバのインターフェースの指定。
デフォルトでは、listen_addresses = ‘localhost’ になっていてローカルからの接続しか受け付けていない。ネットワーク越しの接続を可能にするには以下のように修正する。

listen_addresses = ‘*’

もしくは

listen_addresses = ‘localhost,xxx.xxx.xxx.xxx(DBを持つサーバーのIP)’

次は、Portを開放します。

Portの修正もpostgresql.conf から行います。listen_addresses =のそばに、#port=5432のような記述があるので、シャープを外します。

接続を許可するIPを指定します。

IPを指定するには、pg_hba.confを修正します。

pg_hba.confはおそらく /usr/local/pgsql/data/pg_hba.conf にあります。

DBをへの接続を特定のユーザーにパスワード認証のみで許可する場合以下の1行を、pg_hba.confの最後のところに追記します。

host DB名 ユーザー名 接続してくるIPアドレス/24 md5

ここまで終わったら、Postgresを再起動( service postgresql restart)します。

Iptablesを修正します。

sysconfigディレクトリにある、Iptablesを修正します。多分/etc/sysconfig/iptables あたりにあります。

vimで開いて、以下の2行を追加します。もし、A RH-Firewall-1-INPUT -j REJECT –~~~のように、REJECTの行があったら、それよりも上に入れておく。

-A INPUT -p tcp –dport 5342 -j ACCEPT
-A INPUT -p tcp –sport 5342 -j ACCEPT

これが終われば、iptablesを再起動(service iptables restart)して完了です。

外部から接続テスト

あとは接続をする側のサーバー側で、host、dbname、port、user、passwordを入れて接続確認をします。

下記の内容をphpファイルに記載して、ブラウザから確認します。

接続成功と出れば完了です。

スポンサーリンク

シェアする