他の PC から PostgreSQL データベースに接続できるようにするための設定 (Windows 版)
動作確認環境
- PostgreSQL
-
- PostgreSQL 15
- Windows (サーバー)
-
- Windows Server 2019
- Windows (クライアント)
-
- Windows 11
動作必須環境
- Windows
-
- Windows Server 2019
- Windows Server 2016
- それ以外のバージョンでも動作することはありますが公式ではサポート外です。
ファイアウォール
Windows では標準的に使われるポート以外はファイアウォールによって接続できないようにされているので、 PostgreSQL に接続するためのポートで接続できるように設定する必要があります。
サーバー側の Windows 環境にログインしたらスタートメニューから「ファイアウォール」と入力して 「セキュリティが強化された Windows Defender ファイアウォール」を開きます。
画面を開いたら左のメニューから「受信の規則」を選択し、右のメニューから「新しい規則...」をクリックします。
「規則の種類」で「ポート」を選択します。
「プロトコルおよびポート」でプロトコルは「TCP」を選択します。 ポートについてはデフォルトの「5432」を入力します。PostgreSQL のインストールで別なポート番号を指定した場合はそのポート番号を入力します。
「操作」では「接続を許可する」を選択します。
「プロファイル」では「ドメイン」と「プライベート」にチェックを入れます。 不特定の人にアクセスさせる「パブリック」環境でデータベースにアクセスさせることはほとんどないと思います。
名前と説明を任意で入力します。どういう目的でポートを開けたのか分かりやすいように入力しておいてください。
追加されると一覧に表示されます。
postgresql.conf
postgresql.conf の設定を確認します。バージョン 15 では変更する必要はないと思います。
以下の場所にファイルがあるのでメモ帳アプリなどで開きます。パスについてはバージョンによって異なるので確認してください。
C:\Program Files\PostgreSQL\15\data\postgresql.conf
listen_addresses
というパラメータを探します。以下のように設定されている場合は変更する必要はありません。
listen_addresses = '*'
pg_hba.conf
デフォルトではローカル環境からしかデータベースにアクセスできないように設定されています。
以下の場所にファイルがあるのでメモ帳アプリなどで開きます。パスについてはバージョンによって異なるので確認してください。
C:\Program Files\PostgreSQL\15\data\pg_hba.conf
修正ミスする可能性もあると思いますので、念のためファイルを変更する前にコピーしてバックアップしておいてください。
一番下にスクロールすると以下の行があります。これは IPv4 ではローカルからのみアクセスできることを示しています。
# TYPE DATABASE USER ADDRESS METHOD
:
host all all 127.0.0.1/32 scram-sha-256
:
この ADDRESS を他の PC からもアクセスできるように単一、または範囲設定してください。
どの値を設定するかについては構築しているネットワークに依存します。
どうしても分からない場合は 0.0.0.0/0
で全許可するか samenet
と入力してサーバーと同一ネットワークの範囲を全許可してください。
設定例
# TYPE DATABASE USER ADDRESS METHOD
:
host all all 192.168.0.0/24 scram-sha-256
:
サービスの再起動
pg_hba.conf
等を変更している場合、これらの設定ファイルは PostgreSQL が起動されたときにしか読み込まれませんのでサービスを再起動する必要があります。
ちなみに PostgreSQL が起動した時に読み込まれるので Windows を再起動した場合はそのタイミングで読み込まれます。
スタートメニューを開いたら「サービス」と入力して起動します。
中央の一覧から「postgresql-x64-15 - PostgreSQL Server 15」を探して選択します。名前についてはバージョンによって変わるので注意してください。 選択したら左から「サービスの再起動」をクリックします。
他 PC からの接続確認
他の PC から データベースに接続できるか確認してみます。 接続先情報は環境によって異なるのでここでは手順のみを説明しています。 今回 pgAdmin を使って接続していますが、他のデータベースアクセスツールでも接続できると思います。
データベースサーバーとは別のクライアント PC で pgAdmin を起動したら Servers を右クリックして「Register > Server...」を選択します。
「General」タブの「Name」にはサーバーを識別しやすい名前を入れておきます。
「Connection」タブを選択します。「Host name/address」「Maintenance databalse」「Username」「Password」あたりを入力していきます。 毎回パスワードの入力が面倒な場合は「Save password」を ON にして下さい。 ちなみに Host については pdAdmin が名前解決出来ない場合があるのでその場合は IP アドレスを直接指定してください。
他の入力項目については必要に応じて入力してください。 入力が終わったら「Save」ボタンをクリックします。
対象サーバーのデータベースに接続できれば確認は完了です。