解决无法连接实例问题

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

连接失败的常见报错

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

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

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

DMS连接RDS数据库报错

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

错误信息

报错原因

解决办法

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

  • RDS实例过期。

  • RDS实例的磁盘满。

续费或升级实例存储空间

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

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

授权阿里云账号

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

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

添加DMS服务的IP地址段

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

  • 通过RDS内网地址连接RDS实例前,需要先将ECS内网IP添加到RDS白名单。

    说明
    • 如何添加白名单,请参见设置RDS SQL Server白名单

    • 如果仅添加ECS外网IP地址到RDS白名单,则无法通过内网连接RDS。

  • ECS实例和RDS实例需要位于同一地域才能内网互通。可以是同一地域的相同或不同可用区。

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

      1. 查看ECS实例所在地域。

      2. 查看RDS实例所在地域。

    • 如果ECS实例和RDS实例位于不同的地域,则无法直接通过内网互通,请参见以下方法进行处理:

      • 方法一:

        • 将ECS实例释放退款,重新购买与RDS实例同一地域的实例。

        • 将RDS实例释放退款,重新购买与ECS实例同一地域的实例。

      • 方法二:ECS实例使用RDS实例的公网连接地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址

检查网络类型

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

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

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

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

    • ECS实例采用专有网络而RDS实例采用经典网络的场景:

      • 方法一(推荐):将RDS实例从经典网络切换为专有网络(需要切换到待连接的ECS实例所在的VPC)。具体操作,请参见切换网络类型

      • 方法二:重新购买经典网络的ECS实例。但是VPC比经典网络更安全,建议您使用VPC。

        说明

        ECS实例不支持从VPC迁移到经典网络。

      • 方法三:ECS实例使用RDS实例的公网地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址

    • ECS实例采用经典网络而RDS实例采用专有网络的场景:

      • 方法一(推荐):将ECS实例从经典网络迁移到待连接的RDS实例所在的VPC,可在RDS实例详情页网络类型右侧单击查看连接详情查看RDS实例所在VPC ID。具体操作请参见单ECS迁移示例

      • 方法二:将RDS实例从VPC切换为经典网络。但是VPC比经典网络更安全,建议您使用VPC。

      • 方法三:开通ClassicLink功能,使经典网络的ECS实例可以和VPC中的RDS实例通过内网互通。

        说明

        若开通ClassicLink功能后网络不通,请参见建立ClassicLink连接后经典网络和VPC网络不通的排查思路

      • 方法四:ECS实例使用RDS实例的公网地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址

  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 SQL Server安全组

说明

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

更多教程,请参见:

相关文档

RDS连接失败的排查方法

适用于

云数据库RDS