Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

连接到运行 PostgreSQL 数据库引擎的数据库实例

在 Amazon RDS 预置了您的数据库实例后,就可以使用任何标准 SQL 客户端应用程序与该实例连接。必须注意,在创建分配给该数据库实例的安全组时,该安全组必须允许访问该数据库实例,这一点很重要。如果难以连接到该数据库实例,则在分配给该数据库实例的安全组中设置的访问规则往往是问题所在。

可以使用 AWS 管理控制台、AWS CLI describe-db-instances 命令或 Amazon RDS API DescribeDBInstances 操作列出 Amazon RDS 数据库实例的详细信息,包括其终端节点。如果终端节点值为 myinstance.123456789012.us-east-1.rds.amazonaws.com:5432,则需要在 PostgreSQL 连接字符串中指定以下值:

  • 对于主机或主机名,请指定

    myinstance.123456789012.us-east-1.rds.amazonaws.com
  • 对于端口,请指定

    5432

导致新数据库实例连接故障的两个常见原因是:

  • 数据库实例是使用安全组创建的,而该安全组无法授权来自运行 PostgreSQL 应用程序或实用工具的设备或 Amazon EC2 实例的连接。如果数据库实例是在 VPC 内部创建的,则该 VPC 必须包含可授权连接的 VPC 安全组。如果数据库实例是在 VPC 外部创建的,则该 VPC 必须包含可授权连接的数据库安全组。

  • 数据库实例是使用默认端口 5432 创建的,而您公司的防火墙规则不允许公司网络中的设备连接到该端口。要修复此故障,请修改实例以使用不同的端口。

本节展示两种连接到 PostgreSQL 数据库实例的方法。第一个示例使用 pgAdmin,这是一个时下受欢迎的用于 PostgreSQL 的开源管理和开发工具。客户端计算机上不必具有 PostgreSQL 的本地实例,即可下载和使用 pgAdmin。第二个示例使用 psql,这是一个命令行实用工具,包含在 PostgreSQL 安装中。要使用 psql,必须已在客户端计算机上安装 PostgreSQL,或已在您的计算机上安装 psql 客户端。

在本例中,您使用 pgAdmin 连接到一个 PostgreSQL 数据库实例。

使用 pgAdmin 连接到 PostgreSQL 数据库实例

要使用 pgAdmin 连接到 PostgreSQL 数据库实例,请执行以下操作

  1. 在您的客户端计算机上启动 pgAdmin 应用程序。可从 http://www.pgadmin.org/ 安装 pgAdmin

  2. File 菜单中选择 Add Server

  3. New Server Registration 对话框中,在 Host 文本框中输入该数据库实例的终端节点 (例如,mypostgresql.c6c8dntfzzhgv0.us-west-2.rds.amazonaws.com)。请勿如 Amazon RDS 控制台上所示的那样加入冒号或端口号 (mypostgresql.c6c8dntfzzhgv0.us-west-2.rds.amazonaws.com:5432)。

    将分配给该数据库实例的端口输入到 Port 文本框中。将在创建该数据库实例时输入的用户名和用户密码分别输入到 UsernamePassword 文本框中。

     Postgres 连接
  4. 单击 OK

  5. Object browser 中,展开 Server Groups。选择您创建的服务器 (该数据库实例),然后选择数据库名称。

     Postgres 连接
  6. 单击插件图标,然后单击 PSQL Console。您创建的默认数据库的 psql 命令窗口将打开。

     Postgres 连接
  7. 使用该命令窗口输入 SQL 或 psql 命令。键入 \q 以关闭该窗口。

使用 psql 连接到 PostgreSQL 数据库实例

如果客户端计算机安装有 PostgreSQL,可使用 psql 的本地实例连接到 PostgreSQL 数据库实例。要使用 psql 连接到 PostgreSQL 数据库实例,您需要提供主机信息和访问凭证。

以下格式用于连接到 Amazon RDS 上的 PostgreSQL 数据库实例。请注意,系统将提示您输入密码;对于批量作业或脚本,使用 --no-password 选项。

针对 Linux、OS X 或 Unix:

psql \ --host=<DB instance endpoint> \ --port=<port> \ --username <master user name> \ --password \ --dbname=<database name>

对于 Windows:

psql ^ --host=<DB instance endpoint> ^ --port=<port> ^ --username <master user name> ^ --password ^ --dbname=<database name>

例如,以下命令使用虚构的凭证连接到一个名为 mypgdb 的 PostgreSQL 数据库实例上的一个名为 mypostgresql 的数据库:

psql --host=mypostgresql.c6c8mwvfdgv0.us-west-2.rds.amazonaws.com --port=5432 --username=awsuser --password --dbname=mypgdb

排除连接问题

截至目前,尝试连接到数据库实例上的数据库时最常发生的问题是分配给该数据库实例的安全组中的访问规则。如果在创建该数据库实例时用的是默认数据库安全组,则很有可能该安全组没有将允许您访问该实例的规则。有关 Amazon RDS 安全组的更多信息,请参阅 Amazon RDS 个安全组

最常见的错误是 could not connect to server: Connection timed out。如果发生此错误,则确认主机名是该数据库实例的终端节点,并且端口号正确无误。确认分配给该数据库实例的数据库安全组具有必要的规则以允许通过任何您的连接可穿越的防火墙进行访问。

相关主题