连接到amazon ec2上的远程postgresql服务器

问题描述 投票:7回答:3

我启动了一个amazon ec2实例,并在其上安装了postgresql 9.1。然后我去了安全组:quicklaunch-1(there was one moredefault`我没有改变)并打开5432 TCP端口,表格如下:

(Service)   Source  Action
22        0.0.0.0/0         Delete
5432      0.0.0.0/32    Delete
5433      0.0.0.0/32    Delete
6432      0.0.0.0/32    Delete

我创建了一个数据库和用户。我的/etc/postgresql/9.1/main/pg_hba.conf看起来像这样:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5
host    db_name         user_name       0.0.0.0/0               md5

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
host    replication     postgres        127.0.0.1/32            md5
host    replication     postgres        ::1/128                 md5

和/etc/postgresql/9.1/main/postgresql.conf看起来像这样:

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

然后,我尝试连接到远程计算机,如下所示:

psql -h ec2-xxx-xx-xxx-xxx.compute-1.amazonaws.com -d <database_name> -U <username>

其中ec2-xxx-xx-xxx-xxx.compute-1.amazonaws.com是我的公共DNS。

以上命令不会导致任何连接,我该如何连接?

postgresql amazon-web-services amazon-ec2 postgresql-9.1
3个回答
10
投票

在此表中:

5432      0.0.0.0/32    Delete
5433      0.0.0.0/32    Delete
6432      0.0.0.0/32    Delete 

CIDR看起来你不允许任何IP进入。它们不应该是0.0.0.0/0,就像你对端口22(ssh)所拥有的那样吗?


4
投票

我找到了解决这个问题的方法。需要做两件事。

  1. 使用文本编辑器修改pg_hba.conf。找到所有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 = '*'#要监听的IP地址;

现在只需重新启动postgres服务即可连接


0
投票

你的psql命令需要添加一个-W选项,它允许你输入db用户的密码和-p选项,后跟postgres端口号(默认为5432)

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.