无法使用PgAdmin连接到Amazon Aurora

时间:2018-02-11 19:13:34

标签: django postgresql pgadmin amazon-rds-aurora

我在我的AWS账户上创建了一个Amazon Aurora Postgres数据库,现在正尝试使用PgAdmin连接到它。我输入数据库名称,用户名,密码,主机和端口。当我尝试连接时,我遇到了这个问题。

Unable to connect to server:

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

我是亚马逊Aurora的新手,我不确定下一步要连接的是什么。我阅读了文档,但找不到我要找的内容。当我尝试使用我的Django应用程序的生产服务器连接它时,我也遇到了同样的错误。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'dbname',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'hostname.us-east-2.rds.amazonaws.com',
        'PORT': '5432'
    }
}

我遇到了类似的问题

django.db.utils.OperationalError: could not connect to server: Connection timed out
        Is the server running on host "hostname.us-east-2.rds.amazonaws.com" (IP Address) and accepting
        TCP/IP connections on port 5432?

2 个答案:

答案 0 :(得分:1)

您应该将您尝试连接的IP从EC2中的安全组下添加到您的RDS'安全组作为传入的mysql连接

答案 1 :(得分:0)

我在此处发布了有关PostgreSQL的类似问题的答案,并认为即使使用Aurora,这也可能有所帮助:django cannot connect to RDS postgresql

当您尝试在EC2或EB上使用现有的RDS数据库和Django时,必须调整安全组,然后获取适当的参数并将其设置为环境变量(RDS _ *)

1)创建RDS,并进行匹配:

Environment variables - RDS console label

RDS_HOSTNAME - Endpoint (this is the hostname)
RDS_PORT - Port
RDS_DB_NAME –  DB Name
RDS_USERNAME –  Username
RDS_PASSWORD – Password you set for your DB

2)使用eb setenv

设置那些

3)转到您的EC2 / EB实例,然后获取该实例的安全组。 awseb-z-afsafdsaf-stack-AWSEBSecurityGroup-asfdsadfasdf,对于负载均衡器:awseb-e-adsfadsf-stack-AWSEBLoadBalancerSecurityGroup-asdfadsf

4)转到RDS实例的面板,向下滚动到“安全组”,并记下它具有的安全组。例如rds-launch-wizard-1 (ab-sdjfalkajsdf39)

5)单击RDS实例的“修改”,然后在中间的“安全组”设置中,添加您在上面找到的负载均衡器安全组。应该有建议。

6)转到EC2仪表板,然后从左侧菜单中选择安全组。

7)选择负载均衡器安全组,然后添加出站规则。 Type应该是您的RDS类型(PostgreSQL),目的地应该是custom和RDS实例的安全组。保存。

8)对“入站”执行相同操作,使用相同的RDS类型和“目标”

9)选择RDS安全组,并添加一个入站规则,类似于8,但使用在步骤2中获得的EC2或EB实例。

10)保存,完成。他们现在应该可以一起工作了。

我不是100%肯定所有这些步骤都是必要的,也许不需要一两个步骤,但这已经为我完成了工作。