我无法连接到我的 Amazon Relational Database Service (Amazon RDS) 数据库实例。
简短描述
以下是阻止您与 Amazon RDS 数据库实例连接的最常见原因:
- Amazon RDS 数据库实例处于非可用状态,因此它无法接受连接请求。
- 连接数据库实例的源在您的安全组、网络访问控制列表 (ACL) 或本地防火墙中没有获得访问权限。
- 连接数据库实例时使用了错误的 DNS 名称或端点。
- 多可用区数据库实例进行了失效转移,而辅助数据库实例使用的子网或路由表不允许入站连接。
- 用户身份验证不正确。
解决方法
使用以下一种或多种方法对连接问题进行故障排除。
使用自动化运行手册
使用 AWS Systems Manager Automation 文档 AWSSupport-TroubleshootConnectivityToRDS 来诊断问题。
该自动化文档可以根据 Amazon Elastic Compute Cloud (Amazon EC2) 实例的主 IP 地址诊断网络访问控制列表。但是,临时端口未经过验证。自动化文档还会根据 Amazon EC2 实例的主 IP 地址检查安全组,但该自动化不会检查特定的端口。有关详细信息,请参阅运行由 Systems Manager Automation 支持的自动化操作。
有关如何运行运行手册的说明及其检查内容的详细信息,请参阅 AWSSupport-TroubleshootConnectivityToRDS。
自动化完成后,查看 Outputs(输出)部分以获取详细结果。如果运行手册无法识别问题,请继续执行以下手动步骤。
确认您的数据库实例处于可用状态
如果您最近启动或重启了数据库实例,请在 Amazon RDS 控制台中确认该数据库实例处于可用状态。根据数据库实例的大小,数据库实例最长可能需要 20 分钟才能接受网络连接。如果您的数据库实例处于故障状态,请参阅为什么我的 Amazon RDS 数据库实例处于故障状态?
确认您的数据库实例允许连接
对于连接到您的数据库实例的源,确保来自这个源的流量不会被以下一项或多项配置要求阻止:
潜在的 DNS 名称或端点问题
连接到数据库实例时,您使用 Amazon RDS 控制台提供的 DNS 名称(端点)。请务必使用正确的端点。此外,请以正确的格式为用于连接到数据库实例的客户端提供端点。有关数据库引擎连接以及如何在各种客户端应用程序中使用端点的详细信息,请参阅开始使用 Amazon RDS。
例如,使用 nslookup 从 VPC 中的 Amazon EC2 实例查看数据库实例端点。
nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com
Server: xx.xx.xx.xx
Address: xx.xx.xx.xx#53
非权威答案示例:
Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com
Address: 172.31.xx.x
数据库级别的问题
检查以下数据库级别设置是否配置正确:
- 您有正确的用户名和密码可以从数据库客户端访问实例。
- 用户拥有连接数据库实例的数据库权限。
- Amazon RDS 中不存在任何资源限制,例如 CPU 或内存争用。当您与实例建立较新的连接时,内存争用可能会导致问题。
- 该实例未达到 max_connections 限制。
检查与您的实例关联的路由表
确保与每个数据库实例关联的子网与相同或相似的路由表相关联。如果您的主数据库实例失效转移到与不同路由表关联的备用副本,则流量可能无法正确路由。即使该流量以前路由时没有出现问题,仍然可能无法再正确路由。
有关详细信息,请参阅配置路由表。有关详细信息,请参阅为 Amazon RDS 配置和管理多可用区部署。
**注意:**如果您连接到数据库实例但收到错误,请参阅如何重置 Amazon RDS 数据库实例的主用户密码?
验证您的连接
要验证您的连接,请运行以下命令之一:
telnet <RDS endpoint> <port number>
nc -zv <RDS endpoint> <port number>
telnet 和 nc 命令用于测试客户端与服务器之间的连接。如果 telnet 或 nc 命令执行成功,则网络连接已建立。这意味着问题是由数据库对用户的身份验证(例如用户名或密码)引起的。
相关信息
无法连接到 Amazon RDS 数据库实例
对于使用 VPC 公有或私有子网连接 Amazon RDS 数据库实例的情况,如何解决与之相关的连接问题?
Amazon RDS 的安全性
使用 SSL/TLS 加密与数据库实例或集群的连接