解决无法连接实例问题

更新时间:2025-02-07 06:49:04

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

连接失败的常见报错

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

MySQL或MariaDB
SQL Server
PostgreSQL

错误信息

报错原因

解决办法

  • ERROR 2003 (HY000): Can't connect to MySQL server on 'XXX'(1003810060110)

  • 无法连接到数据库:XXX

网络互通问题。

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

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

  • 确保ECSRDS实例在同一个专有网络中。

  • 检查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: YESNO)

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

用户名或密码错误。

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

  • RDS不提供root账号,您需要自行创建账号。具体操作请参见创建账号

  • 如果密码中包含特殊字符,可能需要加上单引号。例如,在命令中使用-p 'XXX'

  • 如果忘记密码,您可以在控制台的账号管理页面修改密码。

    说明

    修改密码后,新密码可能需要数分钟才生效。

  • ERROR 2005 (HY000): Unknown MySQL server host ‘XXX’ (11011004)

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

  • Name or service not known

  • unknown server host

DNS服务器无法解析地址。

  1. 检查输入的RDS连接地址(字符串)是否正确。以下为可能的出错原因:

    • 地址输入错误,正确的格式为rm-XXX.XXX.rds.aliyuncs.com。

    • 使用外网地址,但是外网地址已经被手动释放。

    • 程序允许输入的地址长度有限,地址被程序截断。

  2. 如果RDS连接地址输入正确但是仍然提示上述错误信息,那么请将DNS服务器地址修改为阿里云的DNS服务器地址。

    • 如果是通过内网(经典网络)访问,改为10.143.22.11610.143.22.118。

    • 如果是通过内网(VPC)访问,改为100.100.2.136100.100.2.138。

    • 如果是通过公网访问,改为223.5.5.5223.6.6.6。

说明

通过ping命令可以查看RDS实例的当前IP地址,但不建议使用IP地址进行连接,因为IP地址可能会因迁移或主备切换而变化。建议始终使用连接字符串,因为它保持不变。

[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`)到期导致的。您可以检查数据库的配置,并根据需要调整这些超时设置,以防止非预期的断开连接。

错误信息

报错原因

解决办法

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

网络互通问题。

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

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

  • 确保ECSRDS实例在同一个专有网络中。

  • 检查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登录用户对应的默认数据库下没有关联的用户。

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

错误信息

报错原因

解决办法

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?

网络互通问题。

  • 确认连接方式,选择合适的连接地址。在控制台的数据库连接中,可以获取对应的连接地址。

    • 内网连接:通过与RDS实例位于同一地域且网络类型相同的ECS连接RDS实例,其中,如果网络类型为专有网络VPC,则专有网络ID也必须相同。

    • 外网连接:通过本地设备或与不满足内网连接的条件的ECS连接RDS实例。

      说明

      外网地址需要手动开通,操作方法请参见开通外网地址

  • 检查客户端所在的ECS或本地设备的IP地址是否已添加到白名单中,或者白名单是否配置错误。详细操作请参见设置白名单

    说明

    通过curl ipinfo.io/ip可以查询本地客户端的公网IP地址。

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

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

  • 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数据库

重要

如果重置了账号密码,需要重新登录DMS。

错误信息

报错原因

解决办法

错误信息

报错原因

解决办法

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账户本地登录。

  • 检查ECSMySQL的防火墙规则。

  • DMSIP加入到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. 如果ECSRDS实例在同一个VPC和地域下,无法通过内网地址连接RDS实例(外网地址可以连接)、pingtelnet都失败。请参见由于路由问题导致ECS无法连接RDS实例处理。

无法通过外网访问RDS实例

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

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

说明

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

更多教程,请参见:

ECS实例与RDS实例跨账号互访

如果您的ECS实例与RDS实例不在同一账号下,可以通过以下方式连接:

相关文档

RDS连接失败的排查方法

适用于

云数据库RDS

  • 本页导读 (1)
  • 连接失败的常见报错
  • DMS连接RDS数据库报错
  • ECS实例无法通过内网访问RDS实例
  • 检查网络类型
  • 无法通过外网访问RDS实例
  • ECS实例与RDS实例跨账号互访
  • 相关文档
  • 适用于
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等