外部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ファイルに記載して、ブラウザから確認します。

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

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

$conn = "host=接続するサーバーIP dbname=データベース名 port=port番号 user=ユーザー名 password=パスワード";
$link = pg_connect($conn);
if (!$link) {
die('接続失敗です。'.pg_last_error());
}

echo('接続に成功しました。<br>');

// PostgreSQLに対する処理

$close_flag = pg_close($link);

if ($close_flag){
echo('切断に成功しました。<br>');
}

?>
</body>
</html>

設定周りで悩んだら、お気軽にご相談ください。
問合せの際は「web担当者を見た」とお伝えください。

この記事を書いた人

デジタルマーケティングに16年間従事しているMITSUIです。Google AnalyticsとGoogle Tag Managerが大好きで、これらのツールを活用した情報提供を行っています。ブログではデジタルマーケティングに関する情報や最新のトレンド、ベストプラクティスを紹介しています。

コメント

コメントする

CAPTCHA


目次