解决无法连接实例问题

本文介绍如何解决无法连接RDS的问题。

连接失败的常见报错

请根据现场情况与具体的报错信息,选择对应的解决方法。

MySQL或MariaDB

错误信息

报错原因

解决办法

  • ERROR 2003 (HY000): Can't connect to MySQL server on 'XXX'(10038或10060或110)

  • 无法连接到数据库:XXX

网络互通问题。

  • 确保ECS实例和RDS实例处于同一个地域。

  • 确保ECS实例和RDS实例的网络类型相同。

  • 确保ECS和RDS实例在同一个专有网络中。

  • 检查ECS实例的内网IP地址是否已添加到RDS实例的白名单。

更多信息,请参见解决方案

  • ERROR 1045 (HY000): #28000ip not in whitelist

  • ERROR 2801 (HY000): #RDS00ip not in whitelist, client ip is XXX

  • ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading authorization packet’, system error:110

白名单设置问题。

检查实例白名单

  • ERROR 1045 (28000): Access denied for user ‘XXX’@’XXX’ (using password: YES或NO)

  • ERROR 1045 (28000): Authentication Failed For RDS maybe username or password is incorrect

用户名或密码错误。

检查连接信息中的用户名和密码

  • ERROR 2005 (HY000): Unknown MySQL server host ‘XXX’ (110或11004)

  • SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

  • Name or service not known

  • unknown server host

DNS服务器无法解析地址。

检查连接地址或修改DNS服务器地址

[Note] [MY-010914] [Server] Aborted connection 671541 to db: 'XXX' user: 'XXX' host: 'XXX' (The client was disconnected by the server because of inactivity.).

数据库连接断开。

由于客户端长时间未发送任何请求,服务器的交互超时设置(如MySQL的`interactive_timeout``wait_timeout`)到期导致的。您可以检查数据库的配置,并根据需要调整这些超时设置,以防止非预期的断开连接。

SQL Server

错误信息

报错原因

解决办法

无法连接到XXX。Cannot connect to XXX。在与SQL Server建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。(provider: TCP Provider, error: 0 - 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)(Microsoft SQL Server,错误: 10060或258)

网络互通问题。

  • 确保ECS实例和RDS实例处于同一个地域。

  • 确保ECS实例和RDS实例的网络类型相同。

  • 确保ECS和RDS实例在同一个专有网络中。

  • 检查ECS实例的内网IP地址是否已添加到RDS实例的白名单。

  • 检查ECS实例中配置的RDS内网地址和端口是否正确。

更多信息,请参见解决方案

无法连接到XXX。Cannot connect to XXX。

已成功与服务器建立连接,但是在登录过程中发生错误。(provider:TCP提供程序,error:0-指定的网络名不再可用。)(Microsoft SQL Server,错误:64)

白名单设置问题。

检查实例白名单

Logon failed for login 'user' due to trigger execution

连接数满。

检查实例连接数以及是否有阻塞

cannot open user default database.Login failed

RDS SQL Server登录用户对应的默认数据库下没有关联的用户。

在此数据库下为登录用户创建一个关联的用户

PostgreSQL

错误信息

报错原因

解决办法

Unable to connect to server:

could not connect to server: Connection timed out (0x0000274C/10060)Is the server running on host “XXX.rds.aliyuncs.com” and acceptingTCP/IP connections on port XXX?

网络互通问题。

  • 检查ECS实例的内网IP地址是否已添加到RDS实例的白名单。

  • 检查白名单是否配置错误。

  • 如果开启了高安全白名单模式,检查是否将白名单添加到了正确的分组。

更多信息,请参见解决方案

  • server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.

  • Error connecting to the server: FATAL: no pg_hba.conf entry

白名单设置问题。

检查实例白名单

FATAL: remaining connection slots are reserved for non-replication superuser connections

连接数满。

关闭连接数进程

FATAL: password authentication failed for user "xxx".

密码错误。

重置密码后重试。

重置密码具体操作,请参见重置密码

DMS连接RDS数据库报错

相关操作,请参见通过DMS连接RDS MySQL数据库通过DMS连接RDS SQL Server数据库通过DMS连接RDSPostgreSQL数据库通过DMS连接RDS MariaDB数据库

错误信息

报错原因

解决办法

The MYSQL server is running with the --rds-deny-access option so it cannot execute this statement

  • RDS实例过期。

  • RDS实例的磁盘满。

续费或升级实例存储空间

对不起,您暂时无法通过DMS访问该实例。

您不是该实例的拥有者,该实例的拥有者并未向您授予登录权限。

授权阿里云账号

请检查连接地址的正确性、网络畅通情况、白名单设置

该问题一般发生于自建的MySQL服务器,问题原因可能是如下几点:

  • ECS实例的防火墙限制或自建MySQL服务器所在主机的防火墙限制。

  • ECS安全组未对DMS开放。

  • MySQL服务器未启动。

  • MySQL服务器只允许root账户本地登录。

  • 检查ECS或MySQL的防火墙规则。

  • 将DMS的IP加入到ECS安全组中。

  • 使用root账户登录MySQL。

更多信息,请参见解决方案

max_user_connections

RDS数据库的连接数满。

解决RDS连接数被占满的问题

因白名单问题无法登录数据库

RDS白名单中没有添加DMS服务的IP地址段。

添加DMS服务的IP地址段

ECS实例无法通过内网访问RDS实例

检查网络类型

  1. 请确保ECS实例和RDS实例的网络类型相同(都是专有网络或都是经典网络)。

    • 查看ECS实例的网络类型。

    • 查看RDS实例的网络类型。

  2. 如果一个是经典网络,一个是专有网络,请参见以下方法进行处理:

  3. 如果ECS实例与RDS实例的网络类型都是专有网络,请确认它们位于同一个专有网络。

    • 查看ECS实例的专有网络ID。

    • 查看RDS实例的网络类型。

  4. 如果专有网络不同,请参见以下方法进行处理:

  5. 如果ECS和RDS实例在同一个VPC和地域下,无法通过内网地址连接RDS实例(外网地址可以连接)、ping和telnet都失败。请参见由于路由问题导致ECS无法连接RDS实例处理。

无法通过外网访问RDS实例

确保连接RDS实例时使用的是RDS的外网地址。您可以在RDS控制台数据库连接页面查看RDS的外网地址。

确保已将正确的本地设备公网IP地址添加到RDS的IP白名单。请在数据库的白名单中临时添加0.0.0.0/0,如果设置后可以正常访问,说明是白名单设置存在问题。您可以通过以下方法获取正确的本地设备公网IP地址,并将该地址添加到白名单中。如何添加白名单,请参见设置RDS MySQL安全组设置RDS SQL Server安全组设置RDS PostgreSQL安全组设置MariaDB白名单

说明

外网IP可能发生变化,例如外网IP是动态的,变化后导致无法连接。如需保持稳定连接,建议使用内网连接并添加内网IP到白名单。

更多教程,请参见:

相关文档

RDS连接失败的排查方法

适用于

云数据库RDS