PostgreSQLのリモート接続設定

デフォルトではlocalでの接続しか許可されていない。 別のホスト(端末)からでもデータベースに接続できるように設定を変更する

設定方法

環境

設定項目(データベースを持つ側)

  1. listen_addressesの修正
  2. データベース(PostgreSQL)のポート変更
  3. 接続を許可するIPを追記

listen_addressesの修正

listen_addressesはクライアントアプリケーションからの接続を監視するTCP/IPアドレスを指定する。この項目で、どのインターフェースが接続を試みるかを制御する。安全でないネットワークインターフェース上において繰り返して行われる接続要求の防止に役立つ(19.3. 接続と認証)

postgresql.confを開き、listen_addressesの項目を編集する

$ sudo vim /etc/postgresql/11/main/postgresql.conf

60行目付近の以下の項目を探す

#listen_addresses = 'localhost'

接続を受け付けるホストのIPアドレスを記述する。すべてのIPアドレスからの接続を受け付ける場合は'*'と指定する。

listen_addresses = '*'

データベースのポート変更

postgresql.conf内の60行目付近にport番号を指定する項目がある この項目に以下を指定する

port = 5432

接続を許可するIPを追記

次に、pg_hba.confを編集して接続を許可するIPアドレスを設定する。 この設定で誰がサーバーにアクセス可能かをきめ細かく制御できる。

$ sudo vim /etc/postgresql/11/main/pg_hba.conf

93行目付近に#IPv4 local connections:と記述されている項目がある。 その中に以下を追記する

host all all 192.168.x.xxx/0 md5

書式は、 接続形式 database user IP-address auth-method
となっている。

上記の設定は、TCP/IPを使用した接続で、192.168.x.xxx/0の範囲内のホストに対してMD5認証を行い、すべてのユーザー、すべてのデータベースへの接続を許可する。ということになる。

設定を反映させる

PostgreSQLを再起動して変更した設定を反映させる

sudo /etc/init.d/postgresql restart

接続の確認

ローカルのシェルからさくらのVPS上のデータベースサーバに接続を試みて接続できるか確かめる。

psql -h os3-xxx-xxxxx.vs.sakura.ne.jp -U akira -d mydb

接続ができた。