PostgreSQLのリモート接続設定
デフォルトではlocalでの接続しか許可されていない。 別のホスト(端末)からでもデータベースに接続できるように設定を変更する
設定方法
環境
- Debian GNU/Linux 9(stretch)
- PostgreSQL 11.1
設定項目(データベースを持つ側)
- listen_addressesの修正
- データベース(PostgreSQL)のポート変更
- 接続を許可する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
接続ができた。