web-dev-qa-db-ja.com

WindowsベースのPostgresqlへの接続の問題

他のコンピューターは私のWindows 7マシンで実行中のPostgresql 9.1を見つけることさえできません。ローカル接続はもちろん問題なく動作します。

私のpg_hba.confには、

#office subnets
Host    all             all             192.168.##.0/24            md5
Host    all             all             192.168.##.0/24            md5

私が持っているpostgresql.confに(はい、ポート5433は意図的です):

listen_addresses = '*'      # what IP address(es) to listen on;
                # comma-separated list of addresses;
                # defaults to 'localhost', '*' = all
                # (change requires restart)
port = 5433             # (change requires restart)

実行するとnetstat -a -b私が見つけたコマンドで:

 Can not obtain ownership information
   TCP    0.0.0.0:5433           XXXXX-PC:0           LISTENING

ヘック、私もファイアウォールの例外を作りました:

Protocols and Ports:
   Local port: Specific Ports, 5433
   Remote port:  All Ports
Scope: Any IP Address
Advanced: Profiles: Private, Public
Programs and Services:  Apply to this service:  postgresql-x64-9.1

PgAdminからの典型的な応答は常に恐ろしいです:

Server doesn't listen

could not connect to server: Connection timed out (0x0000274C/10060) Is the server running on Host "...." and accepting TCP/IP connections on port 5433?

何か案は?

6
Evan Siroky

私がお勧めするトラブルシューティングの手順は次のとおりです。

  1. ローカルマシンから以下を試してください。問題がなければ、問題はPostgreSQLではないことがわかります。それらが機能しない場合、問題はマシンにローカルであることがわかります。

    • psql -h localhost -p 5433
    • psql -h [外部IP] -p 5433
    • 後者が失敗した場合は、すべてのファイアウォールを一時的に無効にして、再試行してください
  2. うまくいったら、次のステップはネットワークのトラブルシューティングです。ここでtracerouteが役立つ場合があります。また、他のソフトウェアを使用して他の開いているポートに接続し、それが機能することを確認してください。そこから、パケットがドロップされている場所を正確に把握できる場合があります。

3
Chris Travers

PostgreSQLサーバーがファイアウォールの通過を許可されていることを確認します。

サーバーマシンで、

コントロールパネル>システムとセキュリティ> Windowsファイアウォール> Windowsファイアウォールを介したアプリの許可

[許可されたアプリと機能]を​​スクロールして、[PostgreSQLサーバー]がオンになっていることを確認します。

2
Bugalugs Nash

私は同じ問題に直面しました、それは私のWin FirewallとAntivirusをオフにすることで解決されました
DBサーバー接続をブロックしていた

1
user17476

postgresのファイアウォールにルールを追加します

「コントロールパネル」に移動= >>「Windows Defenderファイアウォール」

Pannel

Firewall

次に、[詳細設定]を選択します(主に左側の垂直オプション)。これにより、[ローカルコンピュータにセキュリティが強化されたWindows Defenderファイアウォール]が開きます。

Advance

次に、「受信ルール」を選択します。

Inbound

次に、「新しいルール」をクリックします。 「新しい受信の規則ウィザード」が開きます。

New Rule

「プログラム」を選択し、「次へ」をクリックします。

Program

Psql.exeのプログラムパスを追加します。私の場合、psql.exeは "C:\ Program Files\PostgreSQL\9.6\bin\psql.exe"にあります。

Pgm Path

「場所を許可する」を選択します。

location

ルールを適用するユーザーのチェックボックスをすべてオンにします。

Allow For

ルールの適切な名前と説明を入力します。次に、完了をクリックします。

Name

これにより、localhostでpsqlにアクセスするための新しいルールが追加されます。次に、pgAdminを実行するか、cmdを使用してdbにアクセスします。

0
Abhishek