オンラインソースから PostgreSQL データベースに接続する際に問題が発生しています。
PostgreSQLは正常にセットアップされているようです。デフォルトのポート5432で実行されており、postgresql.confには次の行があります。
listen_addresses = '*'
pg_hba.confには次の内容があります
host dbname usname all md5
pgadminで次の資格情報を使用して、別のマシンからPostgreSQLデータベースに接続できます。
Name local
Host 192.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
これらを使用すると完璧に接続でき、問題なく動作するようです。
次に、ADSLルーターのポート192.xx.xx.xx:5432を転送し、パブリックIPアドレス197.xx.xx.xx(インターネットIPから見える)を使用して確認しました。 http://www.canyouseeme.org/ ポートが正常に転送されたことがわかります。
SELinux を無効にし、ファイアウォールも一時的に無効にしました。
しかし、接続しようとすると
Name online
Host 197.xx.xx.xx
Port 5432
Maintenance DB dbname
Username usname
Password psword
サーバーがリッスンしていないというエラーメッセージが表示される
could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "197.xx.xx.xx" and accepting TCP/IP connections on port 5432?
これはなぜでしょうか? ポート転送を介して接続を受け入れるようにするには、追加の手順を追加する必要がありますか?
答え1
all
host
の行の CIDR フィールドでは無効ですpg_hba.conf
。
デフォルト ファイル自体のコメントからpg_hba.conf
:
# ホスト データベース ユーザー CIDR アドレス メソッド [オプション]
そして
CIDR-ADDRESS は、レコードが一致するホストのセットを指定します。これは、IP アドレスと、マスク内の有効ビット数を指定する整数 (0 ~ 32 (IPv4) または 128 (IPv6)) である CIDR マスクで構成されます。または、IP アドレスとネットマスクを別々の列に記述して、ホストのセットを指定することもできます。
代わりにこれを試してください:
host dbname usname 197.xx.xx.xx/32 md5
これにより、リモートホスト 197.xx.xx.xx からのみ usname から dbname への接続が許可されます。
197.xx.xx /24 サブネット全体を許可する場合は、次を使用します。
host dbname usname 197.xx.xx.0/24 md5