PostgreSQLに他の端末からアクセスできない場合の解決策

PostgreSQLは高機能なオープンソースのデータベースですが、他の端末からアクセスできない場合は、以下の手順を確認して問題を解決することができます。この記事では、リモート接続ができない場合の一般的な原因とその解決策を紹介します。

PostgreSQLの設定ファイルを確認する

デフォルトでは、PostgreSQLインストールした端末のみからアクセス可能の状態のため、環境に合わせてIPアドレス、認証方式などの設定必要となります。

postgresql.confの設定

PostgreSQLのメイン設定ファイルであるpostgresql.confを編集します。このファイルは通常、PostgreSQLのデータディレクトリにあります(例:Windowsの場合 C:\Program Files\PostgreSQL\15\data\postgresql.conf)。

自身端末アクセス許可されたかどうか確認します

postgresql.confデフォルト設定


# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

例:192.168.1.xアクセスを許可追加

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# 【追加】192.168.1.xを持つ全てのホストの全てのユーザが、パスワード認証(md5方式)でアクセスを許可
host    all             all             192.168.1.0/24         scram-sha-25
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

ファイアウォールの設定を確認する

PostgreSQLのデフォルトポートは5432です。このポートがファイアウォールでブロックされていないことを確認します。

Windowsの場合

netstatコマンドを使用する

  1. コマンドプロンプトを管理者として実行します。
  2. 以下のコマンドを入力して、ポート5432がリスニング状態にあるか確認します。
netstat -an | find "5432"

出力に以下のような行が含まれていれば、ポート5432がリスニング状態にあります:

  TCP    0.0.0.0:5432           0.0.0.0:0              LISTENING

ブロックされた状態場合、ポートを開放します。

Windows Defender ファイアウォールでポートを開放方法

  1. コントロールパネルを開きます。
  2. システムとセキュリティ」を選択し、「Windows Defender ファイアウォール」をクリックします。
  3. 左側のメニューから「詳細設定」をクリックします。これで「Windows Defender ファイアウォールと詳細セキュリティの管理」が開きます。
  4. 左側の「受信の規則」をクリックします。
  5. 右側の「新しい規則」をクリックします。
  6. ポート」を選択して「次へ」をクリックします。
  7. TCP」を選択し、「特定のローカル ポート」に「5432」と入力して「次へ」をクリックします。
  8. 接続を許可する」を選択し、「次へ」をクリックします。
  9. 適用するプロファイルを選択し(通常はすべて選択)、再び「次へ」をクリックします。
  10. 規則に名前を付けて「完了」をクリックします。

ネットワーク設定の確認

ネットワーク設定に問題があると、別の端末から PostgreSQL にアクセスできないことがあります。

例えば、クライアントマシンと PostgreSQL サーバーが異なるサブネットにある場合、適切なルーティング設定が必要となります。

また、ホスト名ではなく IP アドレスで接続する場合は、クライアントマシンと PostgreSQL サーバーの DNS 設定が正しく設定されていることを確認する必要があります。

PostgreSQL サーバーの起動確認

PostgreSQL サーバーが起動していない場合、別の端末からアクセスすることはできません。

ユーザー権限の確認

クライアントマシンで使用するユーザーが、PostgreSQL サーバーにアクセスするための権限を持っていることを確認する必要があります。

PostgreSQL サーバーには、様々な権限レベルがあり、各権限レベルで許可される操作が異なります。

問題が発生している場合は、クライアントマシンで使用するユーザーの権限レベルを確認し、必要に応じて変更する必要があります。

その他

上記で紹介した解決策を試しても問題が解決しない場合は、以下の点も確認してみてください。

  • クライアントマシンの PostgreSQL クライアントのバージョンが、PostgreSQL サーバーのバージョンと互換性があることを確認する。
  • PostgreSQL サーバーのログファイルを確認して、エラーメッセージがないか確認する。
  • 必要に応じて、PostgreSQL コミュニティフォーラムやドキュメントを参照する。

まとめ

PostgreSQLへのリモートアクセスができない場合、postgresql.confpg_hba.confの設定、ファイアウォールの設定、PostgreSQLの再起動を確認することが重要です。これらの手順を順にチェックすることで、リモートからの接続ができるようになります。

ぜひ、これらの手順を試してみてください。問題が解決しない場合は、エラーログを確認することも有効です。PostgreSQLは非常に柔軟で強力なデータベース管理システムですので、正しく設定すればリモートアクセスもスムーズに行えるようになります。

コメント

タイトルとURLをコピーしました