无法连接到公共 postgresql rds 实例

Edw*_*ges 45 postgresql networking rds amazon-rds

我在一个 VPC 中创建了一个基本的测试 PostgreSQL RDS 实例,该实例具有一个公共子网,并且应该可以通过公共 Internet 进行连接。它使用对端口 5432 开放的默认安全组。当我尝试连接时,它失败了。我一定错过了一些非常简单的东西——但我对此很迷茫。

这是数据库设置,注意它被标记为Publicly AccessibleRDS设置

这是安全组设置,请注意它是完全开放的(在上面的 RDS 设置中由端点旁边的绿色“授权”提示确认): 安全组设置

这是我试图用来连接的命令:

psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
     --port=5432 
     --username=masteruser 
     --password 
     --dbname=testdb
Run Code Online (Sandbox Code Playgroud)

这是我尝试从 Yosemite MacBook Pro 连接时得到的结果(注意,它解析为 54.* ip 地址):

psql: could not connect to server: Operation timed out
    Is the server running on host "myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com" (54.xxx.xxx.xxx) and accepting
    TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)

我没有启用任何类型的防火墙,并且能够连接到其他提供商(例如 Heroku)上的公共 PostgreSQL 实例。

任何故障排除提示将不胜感激,因为我在这里几乎不知所措。

更新

根据评论,以下是默认 VPC 的入站 ACL 规则: 网络ACL配置

Edw*_*ges 53

问题是安全组中的入站规则指定了一个安全组作为源。将其更改为包含我的 IP 地址的 CIDR 解决了该问题。

在AWS中打开数据库安全组;并选择“编辑入站规则”;“添加规则”。下拉菜单中有一个“我的IP”选项;选择该选项以使用 CIDR 表示法自动填充计算机的公共 IP 地址编辑安全组,编辑其入站规则,添加规则,在“来源”栏中选择“我的IP”选项

  • 对于不知道 CIDR 工作原理的人;如果您的 IP 地址是 91.61.76.202(可以使用 http://www.myipaddress.com 找到您的 IP 地址),请将您的来源设置为 91.61.76.202/32 (8认同)

Mig*_*ota 18

遇到了类似的问题,这就是我解决它的方法:

点击RDS实例的安全组,查看入站规则。您可能会看到如下内容:

在此处输入图片说明

必须设置 IP 范围以包含您的 IP 或只需在源下拉列表中选择“任何地方”,以使其可从本地主机或任​​何地方访问:

在此处输入图片说明


小智 8

我在连接 PostgreSQL 时遇到了类似的问题。尽管我可以公开访问 true,但我无法连接。

我在安全组中添加了一条规则入站规则,现在它工作得很好。

在此输入图像描述