几个小时后无法连接AWS RDS for PostgreSQL

27

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

  • 在创建实例后,我可以连接所有实例。
  • 几个小时后(当我停止使用电脑并关闭它后),我再也无法连接任何一个实例。
  • 我使用DBeaver进行连接,错误显示为“连接尝试超时”。

我附上了 RDS instances的信息。希望有人能够帮我解决这个问题。谢谢。


在属性下似乎有一个选项叫做“查询执行时连接”。尝试勾选该选项。此外,我看到了一个自动刷新的选项(时钟符号),首先尝试使用较大的值。 - Slumdog
5个回答

46
终于,我找到了解决我的问题的答案。对于“连接超时”错误,其中一个原因可能是安全设置的问题。尽管我在创建RDS实例时将其设置为公开,但该实例附加了一个私有VPC安全组,没有公开暴露。
我们可以在VPC内将RDS实例附加到一个公共安全组上(我认为这不是一个好的设置,只是给像我这样的AWS初学者使用)如下所示:
  • 从服务中选择EC2,在左侧面板中选择安全组。
  • 点击“创建安全组”按钮。
  • 在对话框中,输入组的名称,例如“postgres-public-access”。
  • 如果您有多个VPC,请确保在最后一个下拉菜单中选择与您的数据库相同的VPC。
  • 在对话框中,点击“添加规则”按钮。
  • 在“类型”列中,选择“PostgreSQL”或其他类型的RDS实例(或者您可以输入您的RDS实例的端口号,通常Postgres的端口号是5432)。
  • 在“源”列中,输入“0.0.0.0/0”。
  • 点击“保存”按钮。
  • 从服务中选择RDS,选择RDS实例,点击“修改”按钮。
  • 在“网络和安全”中,“安全组”中,选择您刚刚创建的VPC安全组,在我的情况下是“postgres-public-access”。
  • 点击“继续”按钮。 现在您可以随时随地连接到您的数据库了。

1
我在这里表达我的感激之情。 - Peter Toth
1
这正是我所需要的。谢谢。 - Pavel Gomon
1
救命稻草。谢谢。 - dilusha_dasanayaka
非常感谢!对我来说,只需在单击“修改”我的数据库后删除默认安全组,就可以解决问题。如果没有你,我可能无法找到解决方法! - Tadeo Hepperle
2
这是最不直观的过程 - 如果它不公开,那么“public”选项是用来干什么的?谢谢! - Sabrina Leggett
谢谢。我编辑了答案,以确保在创建安全组时,您也选择与数据库相同的VPC。 - undefined

22

我需要添加/编辑一条规则到VPC中,以允许所有来源的连接。

步骤:

  1. 进入DB > 连通性与安全性 > 点击VPC(vpc-
  2. 在安全组下 > 安全组 > 打开sg-[something],其中VPC ID匹配数据库VPC

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

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


1
请注意:如果某个源被 VPC 使用,您将无法更改它。因此,您可以首先删除入站规则,然后使用上述指定选项创建新的规则。 - Ibrahim Halici

9

我只是按照这个指南进行操作:https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

按照典型步骤操作:

enter image description here

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

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

  • 尝试 ping 数据库,以查看是否为互联网连接问题。


你能指出如何检查数据库是否为公共数据库吗?谢谢。 - Vivek Puurkayastha
如果RDS数据库不在VPC中,如果您覆盖了默认的网络安全组(NSG),它将是公开可访问的。如果您在VPC中创建一个RDS,通常会将其放在私有子网中(使用NSG将其与公共子网连接,允许DB端口),这样数据库就无法访问,只有公共子网中的Web服务器可以被公开访问(除非您有一个跳板机)。在VPC中,私有子网和公共子网的区别在于公共子网连接到Internet Gateway,并具有允许WWW、0.0.0.0的路由规则。 - undefined

1

选择数据库 -> 修改 -> 连通性 -> 保存

enter image description here


0

我遇到了同样的问题,最终发现是因为我使用的 VPN,当我断开 VPN 后就可以连接了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接