24.6. リモートホストからの接続

PostgreSQL の標準設定では、セキュリティを考慮し、UNIXドメインソケットによる接続しか許可されていません。つまり、リモートホストから PostgreSQL へ接続することはできません。また、ローカルホストの場合でも JDBC インターフェースによる接続のように、tcpip_socket を有効にしないと接続できない場合もあります。リモートホストからの接続を許可するには、$PGDATA/postgresql.conf ファイルを修正して tcpip_socket を有効にする必要があります。さらに、リモートホストから接続するには、クライアント認証設定ファイルである $PGDATA/pg_hba.conf ファイルを編集する必要もあります。これらの設定手順は以下の通りです。

ティップ

postgresql.conf は、PostgreSQL 7.1 から導入されたファイルで、PostgreSQL のデーモンである postmaster の起動オプションを指定することができます。postmaster の引数へ直接オプションを指定することもできますが、postgresql.conf での調整を推奨します。

$PGDATA/postgresql.conf ファイルの編集

$PGDATA/postgresql.conf ファイルの以下の行を探します。

#tcpip_socket = false

標準では、false になっていますので、以下のように on または true に変更し、コメントの # をはずします。

tcpip_socket = on

次に、アクセスを許可するホストを指定します。

$PGDATA/pg_hba.conf ファイルの編集

標準では、以下のようにローカルホストからの接続のみ許可される設定となっています。しかし、すべてのデータベースユーザーからの接続が許可されています。

local      all       all                                         trust
host       all       all         127.0.0.1     255.255.255.255    trust

all は、すべてのデータベースに適用されることを意味し、trust は PostgreSQL に設定したどのデータベースユーザーを使用しても無条件に接続を許可することを意味します。

例えば、特定のホスト(192.168.10.1)からのアクセスを許可するには、以下の1行を追加します。

host       all       all         192.168.10.1  255.255.255.255    trust

特定のネットワークアドレス(192.168.10.0)を持つホストからのアクセスを許可するには、以下の 1 行を追加します。

host       all       all         192.168.10.0  255.255.255.0      trust

全てのホストからのアクセスを許可するには、以下の1行を追加します。

host       all       all         0.0.0.0       0.0.0.0            trust

注意

実際には、データベースに対してパスワードによる認証を行うことを推奨します。pg_hba.conf の詳細は、PostgreSQL オフィシャルマニュアルを参照してください。

編集終了後は、設定を反映するために PostgreSQL の再起動が必要です。

PostgreSQL の再起動

以下のコマンドを root で実行します。

# /etc/init.d/postgresql restart

これで、PostgreSQL へのリモート接続が可能となります。