无法连接到公共 PostgreSQL RDS 实例

无法连接到公共 PostgreSQL RDS 实例

我在私有云平台它有一个公共子网,应该可以通过公共互联网进行连接。它使用默认安全组,该组对端口 5432 开放。当我尝试连接时,它失败了。我肯定错过了一些非常简单的东西——但我对此很困惑。

这是数据库设置。请注意,它被标记为公开访问

RDS 设置

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

安全组设置

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

psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
     --port=5432
     --username=masteruser
     --password
     --dbname=testdb

这是我尝试从Mac OS X 版本 10.10(优胜美地)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?

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

我该如何解决这个问题?

以下是入站访问控制列表规则默认私有云平台:

网络 ACL 配置

答案1

问题是安全组中的入站规则指定了一个安全组作为源。将其更改为跨域路由包括我的 IP 地址在内的问题已经得到解决。

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

编辑安全组,编辑其入站规则,添加规则,在“来源”栏中选择“我的IP”选项

答案2

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

单击 RDS 实例的安全组并检查入站规则。您可能会看到类似以下内容:

在此处输入图片描述

您必须设置 IP 地址范围以包含您的 IP 地址,或者只需在源下拉菜单中选择“任意位置”,即可从本地主机或任何地方:

在此处输入图片描述

答案3

我在连接 PostgreSQL 时遇到了类似的问题。尽管我已将公共访问权限设为 true,但我仍无法连接。

我在安全组中添加了一条入站规则,现在它运行正常。

在此处输入图片描述

答案4

我只是想添加我的发现以节省一些人的时间。

上面描述的解决方案适用于开发EC2实例,但在我迁移到新服务器后,它停止工作。原来我的 RDS 实例和 EC2 实例都在同一个 VPC 中,因此 RDS 实例无法看到我已添加到其安全组的公网 IP 地址。

为了实现此功能,您需要将 EC2 实例的私有 IP 地址(您可以在详细信息中找到)添加到 RDS 实例安全组。

相关内容