无法连接到我的 AWS 数据库实例 | psql:无法连接到服务器:操作超时

Posted

技术标签:

【中文标题】无法连接到我的 AWS 数据库实例 | psql:无法连接到服务器:操作超时【英文标题】:Can't connect to my AWS Database Instance | psql: could not connect to server: Operation timed out 【发布时间】:2018-12-01 18:02:12 【问题描述】:

我在 AWS RDS 上创建了一个 postgres 数据库实例。我正在尝试将此数据库实例连接到我的 django zappa 应用程序,以便我可以执行 AWS Lambda 函数。

我已向我的数据库实例添加了一个新的安全组,因此我可以允许我的 django 应用程序连接到它:

我的数据库详细信息显示新的安全组处于活动状态:

但是,当我尝试通过终端运行psql --host="*************.us-east-2.rds.amazonaws.com" --port="5432" --username="*********" --password --dbname="*****" 来连接它时,

或者通过我的 pgadmin 界面,它返回这个错误:

psql: could not connect to server: Operation timed out
    Is the server running on host "***********.us-east-2.rds.amazonaws.com" (18.191.94.44) and accepting
    TCP/IP connections on port 5432?

知道为什么会这样吗?

【问题讨论】:

您的应用程序是否在同一个 VPC 中运行? 不知道你在问什么,但我的 zappa 应用程序是一个本地 django 项目,它正在尝试连接到 RDS 数据库。我正在按照本教程的说明进行操作:cloudacademy.com/blog/zappa-or-how-to-go-serverless-with-django 【参考方案1】:

最常见的错误是不允许自己访问/未设置为公共可访问性。

    确保将 RDS 数据库实例标记为 publicly accessible(更改为 YES。

如果您希望托管数据库实例的 VPC 之外的 EC2 实例和设备连接到数据库实例,请选择是。如果您选择否,Amazon RDS 将不会为数据库实例分配公有 IP 地址,并且 VPC 之外的任何 EC2 实例或设备都无法连接。如果您选择是,您还必须选择一个或多个 VPC 安全组,以指定哪些 EC2 实例和设备可以连接到数据库实例。

    确保您已允许自己访问 RDS 数据库的 Security Group。您应该添加或更改当前的入站规则以允许您的 ip(或 0.0.0.0/0 作为最后的手段 - 互联网上的任何人都可以连接)访问您端口上的 RDS。默认情况下,出站规则已设置为 0.0.0.0/0

【讨论】:

是的,我已确保该实例可公开访问。至于第二点,是不是我电脑的IP?所以我会将我的计算机的 IP 添加到我的安全组中“出站”的“目标”部分? PS:“目的地已经设置为0.0.0.0/0,但仍然无法正常工作,所以肯定有其他问题。 您还必须将安全组中的入站更改为 0.0.0.0/0 请注意,这是非常不安全的,因此请勿将其用于产品应用程序。推荐且安全的方法是从 AWS API Gateway 上的 REST API 查询数据库,然后由 REST API 查询数据库。

以上是关于无法连接到我的 AWS 数据库实例 | psql:无法连接到服务器:操作超时的主要内容,如果未能解决你的问题,请参考以下文章

AWS:无法从我的机器连接到 RDS 数据库

无法连接到 AWS 托管的 Bitnami 实例中的 phpmyadmin

无法通过 Python Elastic Beanstalk 中的 Flask SQLAlchemy URI 连接到 AWS MySQL RDS 实例

AWS Lambda 无法连接到 RDS 实例,但我可以在本地连接?

如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?

无法通过 PDO 连接到 AWS RDS