无法连接到我的 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 托管的 Bitnami 实例中的 phpmyadmin
无法通过 Python Elastic Beanstalk 中的 Flask SQLAlchemy URI 连接到 AWS MySQL RDS 实例
AWS Lambda 无法连接到 RDS 实例,但我可以在本地连接?