16

私はマイクロ フリー ティア RHEL 6 インスタンスを実行しており、次の yum の手順を使用して postgresql 9.2 をインストールしています: http://yum.pgrpms.org/howtoyum.php

そして、サーバーでこれを使用してローカルでPGサーバーに接続できます:

03:46:20 root@xxx[~]$ psql -hlocalhost -p5432 -Upostgres

ただし、箱の外で正常に接続したことはありません。エラー メッセージは次のようになります。

12:11:56 saladinxu@GoodOldMBP[~]$ psql -h ec2-xxx.ap-southeast-1.compute.amazonaws.com -p5432 -Upostgres
    psql: could not connect to server: Connection refused
    Is the server running on host "ec2-54-251-188-3.ap-southeast-1.compute.amazonaws.com" (54.251.188.3) and accepting TCP/IP connections on port 5432?

いろいろな方法を試してきました。私の構成ファイルは次のようになります。

/var/lib/pgsql/9.2/data/postgresql.conf:

...

# - Connection Settings -

listen_addresses = '*'      # what IP address(es) to listen on;
                # comma-separated list of addresses;
                # defaults to 'localhost'; use '*' for all
port = 5432             # (change requires restart)
max_connections = 100           # (change requires restart)
...

/var/lib/pgsql/9.2/data/pg_hba.conf:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             pgadmin         0.0.0.0/24              trust
host    all             all             [my ip]/24         md5
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

上記のアドレスを 0.0.0.0/0 にしようとしましたが、id が機能しませんでした。

そして、変更を加えるたびに、これを実行して再起動しました

service postgresql-9.2 restart

この EC2 インスタンスのセキュリティ グループには、次のルールが既に表示されています。

TCP
Port (Service)  Source  Action
22 (SSH)    0.0.0.0/0   Delete
80 (HTTP)   0.0.0.0/0   Delete
5432    0.0.0.0/0   Delete

netstat コマンドは、ポートが既に開いていることを示しています。

04:07:46 root@ip-172-31-26-139[~]$ netstat -na|grep 5432
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN      
tcp        0      0 :::5432                     :::*                        LISTEN      
unix  2      [ ACC ]     STREAM     LISTENING     14365  /tmp/.s.PGSQL.5432

bma の質問に答えるには:

サーバーで nmap コマンドをローカルで実行すると、内部 DNS を介して 5432 が開いている別のホストに移動することが示唆されているようです。

10:16:05 root@ip-172-31-26-139[~]$ nmap -Pnv -p 5432 ec2-54-251-188-3.ap-southeast-1.compute.amazonaws.com

Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-22 10:16 EDT
Nmap scan report for ec2-54-251-188-3.ap-southeast-1.compute.amazonaws.com (172.31.26.139)
Host is up (0.00012s latency).
rDNS record for 172.31.26.139: ip-172-31-26-139.ap-southeast-1.compute.internal
PORT     STATE SERVICE
5432/tcp open  postgresql

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

そして iptables コマンドは次の出力を提供します

10:16:14 root@ip-172-31-26-139[~]$ iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
25776   14M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
45  1801 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
251 15008 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
35  2016 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 21695 packets, 5138K bytes)
pkts bytes target     prot opt in     out     source               destination  

[bmaの提案に従って追加後に編集]

新しく追加した後の iptables は次のようになります。

11:57:20 root@ip-172-31-26-139[~]$ iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
26516   14M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
47  1885 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
255 15236 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
38  2208 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
0     0 ACCEPT     tcp  --  *      *       [my ip]         54.251.188.3        tcp spts:1024:65535 dpt:5432 state NEW,ESTABLISHED 
0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            54.251.188.3        tcp spt:5432 dpts:1024:65535 state ESTABLISHED 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 5 packets, 1124 bytes)
pkts bytes target     prot opt in     out     source               destination         
0     0 ACCEPT     tcp  --  *      *       54.251.188.3         [my ip]        tcp spt:5432 dpts:1024:65535 state ESTABLISHED 
0     0 ACCEPT     tcp  --  *      *       54.251.188.3         0.0.0.0/0           tcp spts:1024:65535 dpt:5432 state NEW,ESTABLISHED 

しかし、私はまだ接続できません (同じエラー)。ここで欠けているピースは何でしょうか?

4

3 に答える 3

14

この問題の解決策を見つけました。2 つのことが必要です。

  1. テキスト エディタを使用して pg_hba.conf を変更します。次の行を見つけます。

    host all all 127.0.0.1/0 md5.

    そのすぐ下に、次の新しい行を追加します。

    host all all 0.0.0.0/0 md5

  2. PostgreSQL postgresql.conf ファイルの編集:

    テキスト エディタを使用して、postgresql.conf を変更します。

    で始まる行を見つけます#listen_addresses = 'localhost'

    を削除して行のコメントを外し、#に変更'localhost''*'ます。

    行は次のようになります。

    listen_addresses = '*' # what IP address(es) to listen on;.

postgresサービスを再起動するだけで接続できるようになります

于 2015-09-05T12:41:24.823 に答える