尝试连接到数据库时遇到错误 08001

Mic*_* P. 1 postgresql amazon-web-services amazon-rds

当我尝试连接到我根据 AWS“使用 Amazon RDS 创建并连接到 PostgreSQL 数据库”教程创建的 PostgreSQL 数据库实例时(https://aws.amazon.com/getting-started/ tutorials/create-connect-postgresql-db/),我收到一条错误消息:

[08001] 连接尝试失败。java.net.SocketTimeoutException: 连接超时。

数据库设置为允许所有端口和来自所有 IP 地址的传入和传出流量。我完全不知道如何让它工作,并已联系 AWS Support 征求他们的意见,但到目前为止,我所做的只是按照 AWS 教程中规定的说明进行操作——但无济于事。

有谁知道可能是什么问题?

编辑:我应该提到我的所有主机 URL、端口号、数据库名称等都已正确输入到 DataGrip 中,因此以上都不是问题。

Mic*_* P. 5

好吧——我已经想通了。

首先,@Mark B 是对的——问题是我还没有通过它所属的 VPC 安全组公开访问数据库本身。为此,我从 AWS 中的数据库详细信息屏幕:

  1. 单击(对我来说是唯一的)数据库仪表板“VPC 安全组”下方的链接,该链接将我定向到 EC2 安全组屏幕
  2. 单击与我的数据库相关的安全组链接,该链接将我定向到该组的详细信息页面
  3. 单击“编辑入站规则”按钮,将我定向到“编辑入站规则”屏幕
  4. 单击“添加规则”按钮,导致包含以下列的表格行:“类型”、“协议”、“端口范围”、“来源”、“描述 - 可选”
  5. 为“类型”列选择了“PostgreSQL”,这导致“TCP”和“5432”的值分别填充“协议”和“端口范围”列,输入我机器的 IP 地址(“123.456.789.012/32”) -- 没有引号和括号),并将“描述 - 可选”留空,因为它是可选的。

最后,我想我忘记了明确命名数据库,因此我尝试输入对我来说表面上是数据库名称(即“database-1”)的尝试导致连接错误,指示“database-1”不存在。因此,为了方便和简单地验证我的数据库连接,我在我的数据库客户端中输入了“postgres”作为数据库名称(我目前正在使用 DataGrip),因为“postgres”是 postgreSQL 数据库的实际名称。

这应该有效。我敢肯定,对于那些对 AWS 有经验的人来说,这完全是一件轻而易举的事情,但它对我来说是新的,可能对许多其他人来说也是如此。

再次感谢@Mark B,让我走上了正确的道路。