【问题标题】:Can't Connect to Public RDS Instance in Python无法在 Python 中连接到公共 RDS 实例
【发布时间】:2020-11-07 23:32:26
【问题描述】:

我创建了一个 RDS 实例(Postgres,免费层,在默认 VPC 中)并选择了公共访问权限。现在,我正在尝试像这样在 Python 中连接到它:

import psycopg2 as ps
# define credentials 
credentials = {'POSTGRES_ADDRESS' : '', # change to your endpoint
               'POSTGRES_PORT' : '', # change to your port
               'POSTGRES_USERNAME' : '', # change to your username
               'POSTGRES_PASSWORD' : '', # change to your password
               'POSTGRES_DBNAME' : ''} # change to your db name
# create connection and cursor    
conn = ps.connect(host=credentials['POSTGRES_ADDRESS'],
                  database=credentials['POSTGRES_DBNAME'],
                  user=credentials['POSTGRES_USERNAME'],
                  password=credentials['POSTGRES_PASSWORD'],
                  port=credentials['POSTGRES_PORT'])
cur = conn.cursor()

这是入站的安全组:

但是,这会超时。我究竟做错了什么?我相信我输入了上面的所有凭据,所以这可能是 AWS 方面的问题吗?如果您需要更多信息,请告诉我。

谢谢!

【问题讨论】:

标签: amazon-web-services amazon-rds


【解决方案1】:

您需要在安全组上允许入站访问:

  • 5432 端口
  • 来源:您的 IP 地址(为了安全起见)

最好使用这些设置创建一个新的安全组,然后修改数据库以使用这个新的安全组。这样一来,它就不会影响其他系统,未来的变化也不会影响这个安全组。

另请参阅:Change security group on AWS RDS Database Instance

【讨论】:

  • 我明白了,我按照@Marcin 屏幕截图中的说明进行操作,应该与此设置类似。我又试了一次,不幸的是没有用。编辑默认安全组后,我没有触摸 RDS 实例。我需要这样做吗?谢谢你的帮助,约翰!!
【解决方案2】:

基于 cmets。

这个问题原来是由于在 RDS 中缺少默认数据库

使用默认数据库重新创建 RDS 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 2019-01-02
    • 2021-07-25
    • 2018-05-11
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多