PostgreSQLのアクセス制御

apt-getでインストールしたPostgreSQLはデフォルトではlocalhostからのみ接続を受け付けるようになっています。また、ホスト名を指定しないローカル接続(unixドメインソケット)ではOS上に存在するユーザーのみ接続が許可されています。

localhost以外からの接続

他のホストから接続を受け付けるには、postgresql.confとpg_hba.confを編集します。

'*'ですべてのホストからの接続を許可。

$ sudo vi /etc/postgresql/8.4/main/postgresql.conf
listen_addresses = '*'			(追加)
#listen_addresses = 'localhost'

接続したいネットワークアドレスを追加。

$ sudo vi /etc/postgresql/8.4/main/pg_hba.conf
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
host    all         all         192.168.1.0/24        md5	(追加)

ローカル接続時のパスワード認証での接続

OS上にユーザーが存在しなくても接続できるようにするにはident認証からパスワード認証に変更します。

$ sudo vi /etc/postgresql/8.4/main/pg_hba.conf
# "local" is for Unix domain socket connections only
#local   all         all                               ident	(変更)
local   all         all                               md5	(追加)

設定の反映

設定ファイルをリロードします。

$ sudo service postgresql reload
 * Reloading PostgreSQL 8.4 database server                              [ OK ]