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

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

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

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

#listen_addresses = 'localhost'

標準では、localhost のみが指定された状態でコメントアウトされていますので、以下のように Listen する IP アドレスを記述し、コメントの # をはずします。複数指定する場合は“,”で区切ります。また“*”を指定すると利用可能なすべてのネットワークインターフェースを表します。指定がない場合は、UNIX ドメインソケットのみとなります。

listen_addresses = '192.168.10.1'
$PGDATA/pg_hba.conf ファイルの編集

初期状態では、以下のようにローカルホストからの接続を許可する設定となっています。local はユニックスドメインソケット経由のアクセスに関する設定を表し、host は TCP/IP ネットワーク経由のアクセス(IPv4、IPv6 いずれもループバックアドレスの指定)に関する設定を表しています。すべてのデータベースに対するすべてのロールからの接続が ident の返すユーザー名(通常は Unix ユーザー名)と同じ名前での接続を許可されています。

local   all         all                               ident sameuser
host    all         all         127.0.0.1/32          ident sameuser
host    all         all         ::1/128               ident sameuser

例えば、特定のホスト(192.168.10.2)からのアクセスを許可するには、以下の1行を追加します。trust は無条件に接続を許可することを意味します。

host       all       all         192.168.10.2  255.255.255.255    trust

特定のネットワークアドレス(192.168.10.0)を持つホストからのアクセスを許可し、暗号化されたパスワード認証を行うには、以下の 1 行を追加します。

host       all       all         192.168.10.0  255.255.255.0      md5

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

host       all       all         0.0.0.0       0.0.0.0            trust

注意

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

host       all       all         0.0.0.0       0.0.0.0            md5

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

PostgreSQL の再起動

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

# /etc/init.d/postgresql restart

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