几个小时后无法连接适用于PostgreSQL的AWS RDS

时间:2018-09-14 02:26:26

标签: postgresql amazon-web-services

我使用PostgreSQL创建了多个RDS实例,并遇到相同的问题:

  • 创建实例后,我可以立即连接到所有这些对象。
  • 几个小时后(我停止使用它,关闭笔记本电脑),我无法再连接到其中任何一个。
  • 我使用DBeaver进行连接,错误显示为“连接尝试超时”。

我附上了 RDS instances。希望有人可以帮助我解决这个问题。预先谢谢你。

3 个答案:

答案 0 :(得分:5)

我必须向VPC添加/编辑规则,以允许来自所有来源的连接。

步骤:

  1. 转到数据库>连接性和安全性>单击VPC(vpc-
  2. 在“安全性”>“安全性组”>“打开sg- [something]”中为其VPC ID与数据库VPC匹配

  3. 入站规则>编辑规则>将源更改为任意位置

因此,即使在创建数据库并选择允许公共访问时,它似乎也仅包括来自VPC的流量。通过执行上述步骤,您可以允许访问所有源。

答案 1 :(得分:1)

我刚刚遵循了指南:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

完成典型的事情:

  • 确保数据库是公共的! (在AWS网站控制台中检查)。

  • 检查是否已打开软件的防火墙端口以及您要尝试连接的端口。

  • 在RDS中创建dB时,将自动使用“全部,全部”规则创建一个安全组:

enter image description here

  • 您可以像上面一样为TCP端口5432添加规则。

  • 检查用户名/密码-有时会缓存不正确的用户名/密码。

  • 尝试对dB进行ping操作,以查看其是否存在互联网连接问题。

答案 2 :(得分:0)

最后,我找到了解决问题的答案。对于“连接超时”错误,原因之一可能来自隐私设置。尽管我在创建RDS实例时将其设置为public,但是该实例附加了一个不是public的VPC安全组。 我们可以将RDS实例与公共VPC附加在一起(我认为这不是一个好的设置,仅对于像我这样的AWS初学者而言),如下所示: -从服务中,选择EC2,然后在左侧面板中选择安全组。 -单击“创建安全组”按钮。 -在对话框中,输入组的名称,例如“ postgres-public-access” -在对话框中,单击“添加规则”按钮。 -在“类型”列中,选择“ PostgreSQL”或其他类型的RDS实例。 -在“源”(Source)列中,输入“ 0.0.0.0/0”。 -点击“保存”按钮。 -从服务中,选择RDS,选择RDS实例,单击“修改”按钮。 -在“网络和安全性”的“安全性组”中,选择刚刚创建的VPC安全性组,在我的情况下,它是“ postgres-public-access”。 -点击“继续”按钮。 现在,您可以继续进行数据库连接了。