我在私有云平台它有一个公共子网,应该可以通过公共互联网进行连接。它使用默认安全组,该组对端口 5432 开放。当我尝试连接时,它失败了。我肯定错过了一些非常简单的东西——但我对此很困惑。
这是数据库设置。请注意,它被标记为公开访问:
这是安全组设置。请注意,它是完全开放的(在上面的 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)。
我该如何解决这个问题?
以下是入站访问控制列表规则默认私有云平台:
答案1
问题是安全组中的入站规则指定了一个安全组作为源。将其更改为跨域路由包括我的 IP 地址在内的问题已经得到解决。
在 AWS 中打开数据库安全组;然后选择“编辑入站规则”;“添加规则”。下拉菜单中有一个“我的 IP”选项;选择该选项以 CIDR 表示法自动填充您的计算机的公共 IP 地址:
答案2
我遇到了类似的问题,这就是我解决的方法:
单击 RDS 实例的安全组并检查入站规则。您可能会看到类似以下内容:
您必须设置 IP 地址范围以包含您的 IP 地址,或者只需在源下拉菜单中选择“任意位置”,即可从本地主机或任何地方:
答案3
答案4
我只是想添加我的发现以节省一些人的时间。
上面描述的解决方案适用于开发EC2实例,但在我迁移到新服务器后,它停止工作。原来我的 RDS 实例和 EC2 实例都在同一个 VPC 中,因此 RDS 实例无法看到我已添加到其安全组的公网 IP 地址。
为了实现此功能,您需要将 EC2 实例的私有 IP 地址(您可以在详细信息中找到)添加到 RDS 实例安全组。