连接到amazon ec2上的远程postgresql服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接到amazon ec2上的远程postgresql服务器相关的知识,希望对你有一定的参考价值。
我启动了一个amazon ec2实例,并在其上安装了postgresql 9.1。然后我去了安全组:quicklaunch-1(there was one more
default`我没有改变)并打开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。
以上命令不会导致任何连接,我该如何连接?
在此表中:
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)所拥有的那样吗?
我找到了解决这个问题的方法。需要做两件事。
- 使用文本编辑器修改pg_hba.conf。找到所有127.0.0.1/0 md5的行主机。紧接其下方,添加以下新行:host all all 0.0.0.0/0 md5
- 编辑PostgreSQL postgresql.conf文件:
使用文本编辑器修改postgresql.conf。找到以#listen_addresses ='localhost'开头的行。通过删除#取消注释该行,并将localhost更改为
*
。该行现在应该如下所示:listen_addresses = '*'
#要监听的IP地址;
现在只需重新启动postgres服务即可连接
你的psql命令需要添加一个-W选项,它允许你输入db用户的密码和-p选项,后跟postgres端口号(默认为5432)
干杯!
以上是关于连接到amazon ec2上的远程postgresql服务器的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 Postgres 连接到数据库,但无法将 Amazon 服务器上的地址转换为 Amazon 数据库
postgres_fdw 无法连接到 Amazon RDS 上的服务器
Mysql 无法通过 Amazon EC2 上的套接字连接到本地服务器