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 ファイルの以下の行を探します。
#listen_addresses = 'localhost' |
標準では、localhost のみが指定された状態でコメントアウトされていますので、以下のように Listen する IP アドレスを記述し、コメントの # をはずします。複数指定する場合は“,”で区切ります。また“*”を指定すると利用可能なすべてのネットワークインターフェースを表します。指定がない場合は、UNIX ドメインソケットのみとなります。
listen_addresses = '192.168.10.1' |
初期状態では、以下のようにローカルホストからの接続を許可する設定となっています。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 の再起動が必要です。
以下のコマンドを root で実行します。
# /etc/init.d/postgresql restart |
これで、PostgreSQL へのリモート接続が可能となります。