5

MacにPostgresAppをインストールし、データベースを実行しています。

コマンドを使用して端末から接続できますpsql -h localhost

ここで、同じネットワーク上にある別のマシンからこのサーバーにアクセスしたいと思います。

psql -h <hostname> -U <username>他のマシンから実行すると、エラーが発生します

psql: could not connect to server: Connection refused
    Is the server running on host "my hostname" (xx.xx.xx.xxx) and accepting
    TCP/IP connections on port 5432?

サーバーを実行しているマシンで実行したところlsof -i | grep LISTEN、次の結果が得られました。

postgres  3196 sudarm    5u  IPv6 0x1caf6120      0t0  TCP localhost:5432 (LISTEN)
postgres  3196 sudarm    6u  IPv4 0x14678db0      0t0  TCP localhost:5432 (LISTEN)
postgres  3196 sudarm    7u  IPv6 0x1caf6a80      0t0  TCP localhost:5432 (LISTEN)

別のマシンからサーバーに接続するには、他に何かする必要がありますか?

4

1 に答える 1

15

エラーメッセージは正しい質問をします:サーバーはポート5432で接続を受け入れていますか?あなたが提供したlsof出力は、いいえ、そうではないことを示しています。PostgreSQLはリッスンしてlocalhost:5432います。つまり、データベースサーバー自体からの接続のみを受け入れます。

サーバーを開きpostgresql.conf、設定listen_addresses = '*'して、PostgreSQLを再起動します。次に、すべてのインターフェイスを介した接続をリッスンし、ネットワークを介した接続を受け入れます。

ここから、あなたが遭遇する可能性のある次の問題は認証です。(PostgreSQLは接続を受け入れますが、ネットワーク全体からの接続が確立されたら、おそらく何をすべきかを指示していません。)サーバーにデータベース/ユーザー/ソースアドレスの組み合わせに一致するエントリがあることを確認してくださいpg_hba.confhost all all 10.0.0.0/8 md5-変更を適用するために、必要に応じてPostgreSQLをリロードします。

このmd5部分はPostgreSQLにパスワードを使用して認証を試みるように指示しているため、パスワードをまだ設定していない場合は、問題のユーザーにもパスワードを設定する必要があります。ただし、通常はデータベースを管理します(たとえばpsql template1、データベースサーバー上で)ALTER USER whomever WITH PASSWORD 'your_new_password'

于 2012-10-30T07:33:24.300 に答える