【问题标题】:Unable to connect to Amazon Aurora with PgAdmin无法使用 PgAdmin 连接到 Amazon Aurora
【发布时间】:2018-02-11 19:13:34
【问题描述】:

我在我的 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?

我是 Amazon 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?

【问题讨论】:

    标签: django postgresql pgadmin amazon-aurora


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我在这里发布了一个关于 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) 选择负载均衡器安全组,并添加出站规则。类型应该是您的 RDS 类型 (PostgreSQL),目标应该是自定义和 RDS 实例的安全组。保存。

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

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

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

      我不能 100% 确定所有这些步骤都是必要的,一两个可能不需要,但这为我完成了工作。

      【讨论】:

        【解决方案3】:

        使用 aws RDS 要记住的一件事是,如果您使用容量类型(平均角色)作为无服务器类型,这意味着 AWS RDS 将设法计算数据库实例的容量以匹配您的应用程序的使用情况。无服务器中还会有其他东西。 这使您的服务器不可公开访问(与 ElasticCache 相同),但可以使用数据 API 连接或将您的 EC2 实例/lambda 函数放在该数据库所在的同一 VPC 中。

        【讨论】:

          猜你喜欢
          • 2018-03-01
          • 2013-07-20
          • 2019-11-20
          • 1970-01-01
          • 1970-01-01
          • 2020-02-28
          • 1970-01-01
          • 2020-05-30
          • 2018-05-22
          相关资源
          最近更新 更多