

# 排除与您的 RDS for PostgreSQL 实例的连接故障
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting"></a>

**Topics**
+ [错误 – FATAL：数据库*名称*不存在](#USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname)
+ [错误 – 无法连接到服务器：连接超时](#USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout)
+ [安全组访问规则错误](#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules)

## 错误 – FATAL：数据库*名称*不存在
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname"></a>

如果在尝试连接时收到 `FATAL: database name does not exist` 之类的错误，请尝试对 `--dbname` 选项使用默认数据库名称 **postgres**。

## 错误 – 无法连接到服务器：连接超时
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout"></a>

如果无法连接到数据库实例，则最常见的错误是 `Could not connect to server: Connection timed out.`如果出现此错误，请检查以下内容：
+ 检查所使用的主机名是否是数据库实例端点，以及所使用的端口号是否正确。
+ 确保将数据库实例的公共可访问性设置为**是**，以允许外部连接。要修改**公有访问权限共访问**设置，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。
+ 确保连接到数据库的用户对数据库具有 CONNECT 访问权限。您可以使用以下查询来提供对数据库的连接访问权限。

  ```
  GRANT CONNECT ON DATABASE database name TO username;
  ```
+ 检查分配给数据库实例的安全组是否具有允许您的连接通过相应防火墙进行访问的规则。例如，如果数据库实例是使用默认端口 5432 创建的，您公司的防火墙规则可能不允许外部公司设备连接到该端口。

  要解决此问题，请修改数据库实例以使用不同的端口。另外，确保应用于数据库实例的安全组允许连接到新端口。要修改**数据库端口**设置，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。
+ 检查您尝试使用的端口是否已被本地的 PostgreSQL 实例或计算机上运行的其他服务占用。例如，如果您有一个本地 PostgreSQL 数据库运行在同一个端口（默认为 5432），则这可能会让您无法成功连接到 RDS for PostgreSQL 数据库实例。请确保该端口空闲，或者如果可能的话，尝试使用不同的端口号进行连接。
+ 另请参阅 [安全组访问规则错误](#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules)。

## 安全组访问规则错误
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules"></a>

到目前为止，最常见的连接问题与分配给数据库实例的安全组的访问规则有关。如果在创建数据库实例时使用的是原定设置安全组，则该安全组可能没有允许您访问该实例的访问规则。

要使连接运行，您在创建数据库实例时分配给它的安全组必须允许访问该数据库实例。例如，如果数据库实例是在 VPC 中创建的，则它必须具有授权连接的 VPC 安全组。检查数据库实例是否是使用安全组创建的，而该安全组没有授权来自运行应用程序的设备或 Amazon EC2 实例的连接。

您可以在安全组中添加或编辑入站规则。对于 **Source (源)**，选择 **My IP (我的 IP)**，这允许从浏览器中检测到的 IP 地址访问数据库实例。有关更多信息，请参阅“[通过创建安全组提供对 VPC 中的数据库实例的访问](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)”。

或者，如果数据库实例是在 VPC 外部创建的，则它必须具有授权这些连接的数据库安全组。

有关 Amazon RDS 安全组的更多信息，请参阅 [使用安全组控制访问权限](Overview.RDSSecurityGroups.md)。