オンラインソースから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