【问题标题】:Connect to AWS RDS database via psycopg2通过 psycopg2 连接到 AWS RDS 数据库
【发布时间】:2021-09-05 06:03:10
【问题描述】:

我正在尝试使用 psycopg2 使用 python 脚本从我的计算机连接到我的 RDS 数据库。 蟒蛇代码:

import psycopg2
from db_credentials import *
import logging

def get_psql_conn():
    conn = psycopg2.connect(dbname=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST)
    logging.info("connected to DB!")
    return conn

我收到以下错误:

psycopg2.OperationalError: could not connect to server: Operation timed out
        Is the server running on host ********* and accepting
        TCP/IP connections on port 5432?

我分配给 RDS 数据库的安全组:
SG 1:


SG 2:


现在我尝试创建一个安全组,允许我的计算机 IP 访问数据库。
SG 3:


我可以从我的 ec2 实例连接到数据库,运行与上面相同的 python 脚本。这似乎与第二个安全组有关,因为当我删除它时,我也无法再从我的 ec2 实例连接。然后它会抛出我在尝试从我的计算机连接时遇到的相同错误。


我对 RDS 或安全组知之甚少,我只是按照互联网教程进行操作,但似乎无法理解它。


任何帮助是极大的赞赏!谢谢

【问题讨论】:

  • Amazon RDS 实例是在公有子网还是私有子网中? Publicly Accessible 设置的值是多少?另见:Troubleshoot connectivity to an Amazon RDS instance using the public or private subnet of a VPC
  • 直到今天才公开。我最终将其公开并且现在一切正常,所以感谢您的回复:) 我想从安全角度来看这仍然很好,因为我只是一个单独的开发人员,我的数据库上没有那么有趣的数据并且它仍然在密码后面。
  • 公共设置为其提供了一个可从 Internet 访问的公共 IP 地址。只要保持您的安全组锁定(就像您所做的那样),您就会很安全。

标签: postgresql amazon-web-services amazon-rds psycopg2 aws-security-group


【解决方案1】:

从 Internet 访问 Amazon RDS 数据库时,需要将数据库配置为 Publicly Accessible = Yes

这将为数据库实例分配一个公共 IP 地址。实例的 DNS 名称也将解析为公共 IP 地址。

为了确保可公开访问的数据库的安全性,请确保安全组仅允许从您的个人 IP 地址进行访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2019-02-24
    • 2021-05-08
    • 2019-05-27
    • 2016-12-13
    相关资源
    最近更新 更多