postgresql - 尝试连接数据库时遇到错误 08001
问题描述
当我尝试连接到一个 PostgreSQL 数据库的实例时,我已按照位于此处 ( https://aws.amazon.com/getting-started/ ) 的 AWS“使用 Amazon RDS 创建并连接到 PostgreSQL 数据库”教程创建tutorials/create-connect-postgresql-db/),我收到一条错误消息:
[08001] 连接尝试失败。java.net.SocketTimeoutException:连接超时。
数据库设置为允许所有端口和来自所有 IP 地址的传入和传出流量。我完全不知道如何使这项工作正常进行,并已联系 AWS Support 征求他们的意见,但到目前为止,我所做的只是按照 AWS 教程规定的指示进行操作,但无济于事。
有谁知道可能是什么问题?
编辑:我应该提到我的所有主机 URL、端口号、数据库名称等都已正确输入 DataGrip,所以以上都不是问题。
解决方案
好吧——我想通了。
首先,@Mark B 是对的——问题是我还没有通过它所属的 VPC 安全组公开访问数据库本身。为此,我从 AWS 中的数据库详细信息屏幕:
- 单击数据库仪表板的“VPC 安全组”下方的链接(对我来说是唯一的)链接,该链接将我引导至 EC2 安全组屏幕
- 单击与我的数据库相关的安全组链接,该链接将我定向到该组的详细信息页面
- 单击“编辑入站规则”按钮,将我引导至“编辑入站规则”屏幕
- 单击“添加规则”按钮,这会导致包含以下列的表格行:“类型”、“协议”、“端口范围”、“源”、“描述 - 可选”
- 为“类型”列选择“PostgreSQL”,导致“TCP”和“5432”的值分别填充“协议”和“端口范围”列,输入我机器的IP地址(“123.456.789.012/32” -- 没有引号和括号),并将“描述 - 可选”留空,因为它是可选的。
最后,我想我忘记显式命名数据库,所以我尝试输入对我来说表面上是数据库名称(即“database-1”)的结果导致连接错误,指示“database-1”不存在。因此,为了方便和简单地验证我的数据库连接,我在我的数据库客户端(我目前使用 DataGrip)中输入了“postgres”作为数据库名称,因为“postgres”是 postgreSQL 数据库的实际名称。
这应该有效。我敢肯定,对于那些在 AWS 方面更有经验的人来说,这都是不费吹灰之力的事情,但它对我来说是新的,大概对许多其他人来说也是如此。
再次感谢@Mark B,让我走上了正确的道路。
推荐阅读
- python - 如何使用标量和数组创建 csv 文件?Python
- tableau-api - 如何在 Tableau 中“硬编码”饼图?
- python - Python - 从列表中弹出一个元素
- dataframe - 在 Julia 中,如果某些列不同,我该如何组合多个数据框?
- python - 在 AWS CodeDeploy 上为 django runserver 命令运行新的 shell 进程
- android - 为什么 Delphi 10.3 App 在 Android 11 中崩溃?
- javascript - 我应该如何在 Typescript 中定义一个动态类型,它应该保留用户输入的实际类型
- javascript - ReactJS如何使用if函数
- javascript - 映射时获取重复按钮
- ios - 如何从字符串中提取值?(迅速)