
# RDS实例连接失败怎么办
#### 操作视频
<video controls="controls" preload="none" id="object1510414014448" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/video/RDS-/1625627523661016864.mp4" title="RDS实例连接失败怎么办" poster="https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000001934422133.png" height="380.0000" width="680.0000"></video>
#### 问题分析
主要从八个方面考虑：
1. [排除数据库实例异常]
   例如：RDS系统故障，实例状态异常，实例或表被锁定。
   
2. [（常见）使用正确的客户端连接方式]
   - 内网连接需要RDS与ECS实例必须在同一区域、VPC内。
   
   - 公网连接需要购买或使用已有EIP，并对RDS实例绑定该EIP 。
    
3. [使用正确的SSL方式安全连接]
   界面SSL开关开启和关闭，分别对应不同的连接命令。例如：
   - 开关开启：**mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem**
   
   - 开关关闭：**mysql -h 172.16.0.31 -P 3306 -u root -p**
    
4. [排除连接命令错误]
   例如：连接地址错误、端口参数配置错误、用户名和密码错误、SSL方式下命令错误。
   
5. [（常见）排除网络不通]
   内网访问
   1. 确认ECS与RDS是否在同一个区域，VPC。
   
   2. 检查安全组规则。 安全组外访问安全组内的RDS实例时，需要为安全组[添加相应的入方向规则](https://support.huaweicloud.com/usermanual-rds-mysql/rds_11_0009.html)。
      
   
   3. 在ECS上测试是否可以正常连接到RDS实例地址的端口。
   
   
   公网访问
   1. 检查安全组规则。 安全组外访问安全组内的RDS实例时，需要为安全组[添加相应的入方向规则](https://support.huaweicloud.com/usermanual-rds-mysql/rds_11_0009.html)。
      
   
   2. 检查网络ACL规则。
   
   3. 相同区域主机进行ping测试。
    
6. [（常见）排除实例的连接数满的情况]
   实例连接数过多，可能会导致业务侧无法正常连接。
   
7. [（常见）排除实例的磁盘满的情况]
   当实例处于"磁盘空间满"状态时，影响数据的正常读写操作。
   
8. [连接失败的常见报错]
   包含连接失败的常见报错，以及相应的解决方法。
   
 
#### 排查思路
图1连接实例失败排查思路   
![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002212063340.png "点击放大")
1. **排除数据库实例异常**
   **检查办法**：请在控制台检查云实例状态是否为"正常"。
   **可** **能原因**：RDS系统故障，实例状态异常，实例或表被锁定等。
   **解决方案**：如果实例状态为"异常"，请尝试重启。
   图2检查实例状态   
   ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002706738820.png "点击放大") 
2. **使用正确的客户端连接方式**
   表1客户端连接方式 
   | 连接方式 | 使用场景                                                                                                                                                                                      | 连接样例                                                                                                              |
   |:---|:---|:---|
   | 内网方式 | 系统默认提供内网IP地址。 当应用部署在ECS上，且该ECS与RDS实例处于同一区域，同一VPC时，建议单独使用内网IP连接ECS与RDS实例。                                                                                   | 以RDS for MySQL为例： **mysql -h \<内网地址\> -P 3306 -u root -p** **--ssl-ca=/tmp/ca.pem**  |
   | 公网方式 | 不能通过内网IP地址访问RDS实例时，使用公网访问，建议单独绑定弹性公网IP连接ECS（或公网主机）与RDS实例。 用户需要购买弹性公网IP，请参见[弹性公网IP计费说明](https://support.huaweicloud.com/price-eip/eip_billing_0002.html)。 | 以RDS for MySQL为例： **mysql -h \<弹性公网IP\> -P 3306 -u root -p --ssl-ca=/tmp/ca.pem** |
      
   
3. **使用正确的SSL方式安全连接**
   - （推荐）SSL方式：实例"概览"页面的SSL开关开启，并且上传证书到ECS。 **mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem**
     图3SSL开关开启   
     ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002706739236.png "点击放大") 
   
   - 普通方式：实例"概览"页面的SSL开关关闭。 **mysql -h 172.16.0.31 -P 3306 -u root -p**
     
    
4. **排除连接命令错误**
   请获取正确的连接地址、端口参数配置、用户名和密码、SSL方式下命令错误，并重试连接实例。
   **SSL内网连接RDS for MySQL示例：mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem**
   - 连接地址 目标实例"连接管理"页面的"内网地址"。
     图4内网地址   
     ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002706897604.png "点击放大") 
   
   - 数据库端口 目标实例"连接管理"页面的"数据库端口"。
     
   
   - 用户名和密码 root管理员账号及其对应的密码。
     
   
   - 证书名称 SSL证书文件名，该文件需放在执行该命令的路径下。
     
   
   
   **SSL公网连接RDS for MySQL示例：mysql -h *公网地址* -P 3306 -u root -p --ssl-ca=/tmp/ca.pem**
   - 连接地址 目标实例"连接管理"页面的"公网地址"。
     图5弹性公网IP   
     ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002736617429.png "点击放大") 
   
   - 数据库端口 目标实例"连接管理"页面的"数据库端口"。
     
   
   - 用户名和密码 root管理员账号及其对应的密码。
     
   
   - 证书名称 SSL证书文件名，该文件需放在执行该命令的路径下。
     
    
5. **排除网络不通**
   **内网访问**
   1. 检查ECS与RDS是否在同一个区域，VPC。
      - 不同区域的云服务之间内网互不相通，无法访问实例。请就近选择靠近您业务的区域，可减少网络时延，提高访问速度。
      
      - 如果不在同一VPC，可以修改ECS的VPC，请参见[切换虚拟私有云](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0504.html)。
      
      
      图6查看ECS的VPC   
      ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002247223249.png)
      图7查看RDS的VPC   
      ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002736498589.png "点击放大") 
   
   2. 检查安全组规则。
      - 查看ECS的安全组的出方向规则，如果目的地址不为"0.0.0.0/0"且协议端口不为"全部"，需要将RDS实例的内网IP地址和端口添加到出方向规则。
        图8ECS的安全组   
        ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002212223136.png "点击放大") 
      
      - 查看RDS的安全组的入方向规则，需要将ECS实例的IP地址和端口添加到[入方向规则](https://support.huaweicloud.com/usermanual-rds-mysql/rds_11_0009.html)。
       
   
   3. 在ECS上测试是否可以正常连接到RDS实例地址的端口。
      **telnet** \<*连接地址* \> \<*端口号\>*
      - 可以通信，说明网络正常。
      
      - 无法通信，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/business?productTypeId=2a129f7ed0b543c6b92d73e2c26aa590&subTypeId=-1&type=2)联系华为云客服协助解决。
        
    
   **公网访问**
   1. 检查安全组规则。
      - 查看ECS的安全组的出方向规则，如果目的地址不为"0.0.0.0/0"且协议端口不为"全部"，需要将RDS实例的公网IP地址和端口添加到出方向规则。
        图9ECS的安全组   
        ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002212223144.png "点击放大") 
      
      - 查看RDS的安全组的入方向规则，需要将ECS实例的IP地址和端口添加到[入方向规则](https://support.huaweicloud.com/usermanual-rds-mysql/rds_11_0009.html)。
       
   
   2. 检查网络ACL规则。
      1. 进入虚拟私有云[网络ACL](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0051746700.html)列表。
      
      2. 检查EIP绑定的网卡是否在网络ACL关联的子网下。
      
      3. 查看网络ACL当前是"开启"状态还是"关闭"状态。 若网络ACL为"开启"状态，需要[添加ICMP放通规则进行流量放通](https://support.huaweicloud.com/usermanual-vpc/vpc_acl_0005.html)。
         
      
      
      注意：网络ACL的默认规则是丢弃所有出入方向的包，关闭"网络ACL"后，其默认规则仍然生效。
      
   
   3. 相同区域主机进行ping测试。 如果在原ECS上没有ping通RDS实例绑定的EIP，请在相同区域的另一台ECS上去ping该EIP，如果可以正常ping通，说明虚拟网络正常，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/business?productTypeId=2a129f7ed0b543c6b92d73e2c26aa590&subTypeId=-1&type=2)联系华为云客服协助解决。
      
    
6. **排除实例的连接数满的情况**
   **检查办法**：
   1. 通过**show variables like '%max%connections%';** 命令查看实例连接数，示例：
      ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002247143165.png)
      - max_connections：允许同时连接的客户端总数。如果设定值为default，表示该参数随内存规格变化，具体请参见[RDS数据库实例支持的最大数据连接数是多少](https://support.huaweicloud.com/rds-mysql_faq/rds_faq_0055.html)。
      
      - max_user_connections：特定RDS for MySQL账户允许的最大同时连接数。
       
   
   2. 查看[实例的连接数指标](https://support.huaweicloud.com/usermanual-rds-mysql/rds_08_0027.html)是否已达上限，可查看目标实例的"数据库总连接数"和"当前活跃连接数"，判断是否需要释放连接。
   
   
   **可能原因**：数据库连接数过多，可能会导致业务侧无法正常连接，也会导致实例全量备份和增量备份失败，影响业务的正常使用。
   **解决方案** ：
   1. 请及时排查业务侧连接是否有效，优化实例连接，释放不必要的连接。
   
   2. 如果设定值为default，可以对数据库进行规格扩容，用以提高max_connections的值，具体请参见[变更数据库规格](https://support.huaweicloud.com/api-rds/rds_01_0101.html)。
   
   3. 云监控服务目前可以监控数据库CPU、内存、磁盘、连接数等指标，并且设置告警策略，出现告警时可以提前识别风险。支持的监控指标请参见[支持的监控指标](https://support.huaweicloud.com/usermanual-rds-mysql/rds_06_0001.html)。
     
7. **排除实例的磁盘满的情况**
   **检查办法** ：磁盘空间使用率可通过管理控制台或云监控服务查看。
   - 通过管理控制台查看 选择目标实例，单击实例名称，进入"概览"页面。在"存储与备份"模块，查看磁盘使用率。
     图10查看磁盘使用率   
     ![](https://support.huaweicloud.com/rds-mysql_faq/zh-cn_image_0000002247143161.png "点击放大") 
   
   - 通过云监控服务查看 选择目标实例，单击"查看监控指标"，跳转到云监控页面，查看目标实例的磁盘使用率指标。
     
    
   **可能原因及** **解决方案** ：请参见[RDS for MySQL磁盘满导致实例只读的问题处理](https://support.huaweicloud.com/usermanual-rds-mysql/rds_08_00007.html)。
   
8. **连接失败的常见报错**
   通过命令连接数据库实例时，可能出现的报错信息和解决方案如下所示：
   - ERROR 2013：Lost connection to MySQL server during query 连接超时参数"wait_timeout"和"interactive_timeout"设置过小时，RDS for MySQL会自动断开超时的空连接。具体请参见[RDS for MySQL客户端连接实例后会自动断开](https://support.huaweicloud.com/trouble-rds-mysql/rds_12_0014.html)。
     
   
   - ERROR 1045 (28000): Access denied for user 'root'@'192.168.0.30' (using password: YES) 排除是否密码错误问题，确认该主机是否有连接数据库实例的权限，以及RDS for MySQL客户端和实例VIP是否可以连通，具体请参见[RDS for MySQL实例无法访问](https://support.huaweicloud.com/trouble-rds-mysql/rds_12_0010.html)。
     
   
   - ERROR 1226 (42000): User 'test' has exceeded the 'max_user_connections' resource (current value:10) 排查是否限制了实例的连接数，导致连接失败，具体请参见[RDS for MySQL实例无法访问](https://support.huaweicloud.com/trouble-rds-mysql/rds_12_0010.html)。
     
   
   - ERROR 1129 (HY000): Host '192.168.0.111' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 排查是否由于RDS for MySQL客户端连接数据库的失败次数(不包括密码错误)，超过了max_connect_errors的值，导致连接失败，具体请参见[RDS for MySQL实例无法访问](https://support.huaweicloud.com/trouble-rds-mysql/rds_12_0010.html)。
     
   
   - \[Warning\] Access denied for user 'username'@'yourIp' (using password: NO) 连接RDS for MySQL实例时出现该报错，请检查用户名或密码是否正确。
     
   
   - \[Warning\] Access denied for user 'username'@'yourIp' (using password: YES) 连接RDS for MySQL实例时出现该报错，请检查用户名或密码是否正确。
     
    
9. **如果上述方法均不能解决您的疑问，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/business?productTypeId=2a129f7ed0b543c6b92d73e2c26aa590&subTypeId=-1&type=2)联系华为云客服为您解答。**
 
