
# TaurusDB实例连接失败怎么办
#### 问题分析
主要从以下方面考虑：
1. [排除数据库实例异常]
   例如：实例状态异常。
   
2. [（常见）使用正确的客户端连接方式]
   - 内网连接需要TaurusDB与ECS实例在同一区域、VPC内。
   
   - 公网连接需要购买或使用已有EIP，并对TaurusDB实例绑定该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方式连接时参数配置错误、JDBC连接参数配置错误等。
   
5. [（常见）排除网络不通]
   - 内网访问
     1. 确认ECS与TaurusDB是否在同一区域、VPC内。
     
     2. 检查安全组规则。
     
     3. 在ECS上测试是否可以正常连接到TaurusDB实例地址的端口。
      
   
   
   
   - 公网访问
     1. 检查安全组规则。
     
     2. 检查网络ACL规则。
     
     3. 相同区域主机进行ping测试。
      
    
6. [（常见）排除实例的连接数满的情况]
   实例连接数过多，可能会导致业务侧无法正常连接。
   
7. [连接失败的常见报错]
   包含连接失败的常见报错，以及相应的解决方法。
   
 
#### 排查思路
图1连接失败的排查思路   
![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000002125156425.png "点击放大")
1. **排除数据库实例异常**
   **检查办法**：请在控制台检查云实例状态是否为"正常"。
   **可** **能原因**：云数据库 TaurusDB实例状态异常。
   **解决方案**：如果实例状态为"异常"，请尝试重启。
   图2检查实例状态   
   ![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000002089444632.png "点击放大")
   
   
2. **使用正确的客户端连接方式**
   安装MySQL 8.0的数据库实例版本的[客户端](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0011.html)。
   内网和公网连接实例的具体操作步骤，请参见[外部服务器能否访问TaurusDB数据库](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0057.html)。
   表1客户端连接方式 
   | 连接方式 | 使用场景                                                                                                                                                                                                                                       | 连接样例                                                                                                                                                                  |
   |:---|:---|:---|
   | 内网方式 | 系统默认提供内网IP地址。 当应用部署在ECS上，且该ECS与TaurusDB实例处于同一区域，同一VPC时，建议单独使用内网IP连接ECS与TaurusDB实例。                                                                                   | **mysql -h *内网地址* -P 3306 -u root -p** **--ssl-ca=/tmp/ca.pem** 内网地址：目标实例概览页面，"网络信息"模块的"读写内网地址"。 |
   | 公网方式 | 不能通过内网IP地址访问TaurusDB实例时，使用公网访问，建议单独绑定弹性公网IP连接ECS（或公网主机）与TaurusDB实例。 用户需要购买弹性公网IP，请参见[弹性公网IP计费说明](https://support.huaweicloud.com/price-eip/eip_billing_0002.html)。 | **mysql -h *弹性公网IP* -P 3306 -u root -p --ssl-ca=/tmp/ca.pem** 弹性公网IP：目标实例概览页面，"网络信息"模块的"读写公网地址"。                       |
      
   
3. **使用正确的SSL方式安全连接**
   - **（推荐）** SSL方式：实例SSL开关开启，下载解压后获取根证书（ca.pem）并且上传证书到ECS的"/tmp"目录下。
     例如：
     ```
     mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
     ```
     图3SSL开关开启   
     ![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000002015346196.png "点击放大")
     
     
   
   - 普通方式：实例SSL开关关闭。 例如：
     ```
     mysql -h 172.16.0.31 -P 3306 -u root -p
     ```
     
    
4. **排除连接命令错误**
   请获取正确的连接地址、端口参数配置、用户名和密码、SSL证书，并重试连接实例。
   - **SSL内网连接TaurusDB**
     - 连接命令 **mysql -h *连接地址* -P *数据库端口* -u *用户名* -p --ssl-ca=*SSL证书***
       示例：
       **mysql -h 192.168.0.153 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem**
       
     
     - 连接地址 目标实例的实例概览页面，"网络信息"模块的"读写内网地址"。
       图4内网地址   
       ![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000002015189844.png "点击放大")
       
       
       
     
     - 数据库端口 目标实例的实例概览页面，"网络信息"模块的"数据库端口"。
       
     
     - 用户名和密码 root管理员账号及其对应的密码。
       如果连接数据库时出现类似如下错误，请检查用户名或密码是否正确。
       ```
       [Warning] Access denied for user 'username'@'yourIp' (using password: NO)
       [Warning] Access denied for user 'username'@'yourIp' (using password: YES)
       ```
       
     
     - SSL证书 SSL证书文件名，路径和文件名需要与命令中的保持一致。
       
      
   
   - **SSL公网连接TaurusDB**
     - 连接命令 **mysql -h *连接地址* -P *数据库端口* -u *用户名* -p --ssl-ca=*SSL证书名称***
       示例：
       **mysql -h 10.83.34.224 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem**
       
     
     - 连接地址 目标实例的实例概览页面，"网络信息"模块的"读写公网地址"。
       图5读写公网地址   
       ![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000002015352988.png "点击放大")
       
       
     
     - 数据库端口 目标实例的实例概览页面，"网络信息"模块的"数据库端口"。
       
     
     - 用户名和密码 root管理员账号及其对应的密码。
       ```
       [Warning] Access denied for user 'username'@'yourIp' (using password: NO)
       [Warning] Access denied for user 'username'@'yourIp' (using password: YES)
       ```
       
     
     - 证书名称 SSL证书文件名，路径和文件名需要与命令中的保持一致。
       
      
    
5. **排除网络不通**
   **内网访问**
   1. 检查ECS与TaurusDB是否在同一个区域，VPC。
      - 不同区域的云服务之间内网互不相通，无法访问实例。请就近选择靠近您业务的区域，或通过云连接、VPN打通网络实现内网访问，可减少网络时延，提高访问速度，详细内容请参见[TaurusDB跨区域内网能访问吗](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0067.html)。
      
      - 同一区域，不同VPC下，TaurusDB内网不通，且创建实例后不支持切换VPC。可以通过VPC建立对等连接，详细内容请参见[测试网络连通性失败怎么办](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0065.html)。
      
      
      图6查看ECS的VPC   
      ![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000001928571281.png "点击放大")
      图7查看TaurusDB的VPC   
      ![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000002051390177.png "点击放大")
      
      
   
   2. 检查安全组规则。
      - 查看ECS的安全组的出方向规则，如果目的地址不为"0.0.0.0/0"且协议端口不为"全部"，需要使用添加规则或快速添加规则功能将TaurusDB实例的读写内网地址和端口添加到出方向规则。
      
      - 查看TaurusDB的安全组的入方向规则，需要使用添加规则或快速添加规则功能将ECS实例的私有IP地址和端口添加到入方向规则。
       
   
   3. 在ECS上测试是否可以正常连接到TaurusDB实例的读写内网地址。 **telnet** *读写内网地址 端口*
      示例：
      **telnet** **192.168.0.153 3306**
      - 可以通信，说明网络是正常的。
      
      - 无法通信，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)处理。
        
    
   **公网访问**
   1. 检查安全组规则。
      - 查看ECS的安全组的出方向规则，如果目的地址不为"0.0.0.0/0"且协议端口不为"全部"，需要使用添加规则或快速添加规则功能将TaurusDB实例的读写公网地址和端口添加到出方向规则。
      
      - 查看TaurusDB的安全组的入方向规则，需要使用添加规则或快速添加规则功能将ECS实例的弹性公网IP地址和端口添加到入方向规则。
       
   
   2. 检查网络ACL规则。
      1. 进入虚拟私有云[网络ACL](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0051746700.html)列表。
      
      2. 检查TaurusDB和ECS绑定的弹性公网IP绑定的网卡是否在网络ACL关联的子网下。
      
      3. 查看网络ACL当前是"开启"状态还是"关闭"状态。 若网络ACL为"开启"状态，需要[添加ICMP放通规则进行流量放通](https://support.huaweicloud.com/usermanual-vpc/vpc_acl_0005.html)。
         
      
      
      注意：网络ACL的默认规则是丢弃所有出入方向的包，关闭"网络ACL"后，其默认规则仍然生效。
      
   
   3. 相同区域主机进行ping测试。 如果在原ECS上没有ping通TaurusDB实例绑定的EIP，请在相同区域的另一台ECS上去ping该EIP，如果可以正常ping通，说明虚拟网络正常，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)处理。
      
    
6. **排除实例的连接数满的情况**
   **检查办法**：
   1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
   
   2. 在"实例管理"页面，选择目标实例，单击操作列的"登录"。
   
   3. 输入密码，单击"测试连接"，连接成功后单击"登录"，进入数据管理服务。
   
   4. 选择"SQL操作 \> SQL窗口"，打开新的SQL窗口。
   
   5. 输入命令并单击"执行SQL"，查看实例连接数，示例： **show variables like '%max%connections%';**
      ![](https://support.huaweicloud.com/taurusdb_faq/figure/zh-cn_image_0000001882572148.png "点击放大")
      - max_connections：允许同时连接的客户端总数。如果设定值为default，表示该参数随内存规格变化，具体请参见[TaurusDB数据库实例支持的最大数据连接数是多少](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0059.html)。
      
      - max_user_connections：特定TaurusDB账户允许的最大同时连接数。
       
   
   6. 通过云监控服务查看[实例的连接数指标](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0088.html)是否已达上限，可查看目标实例的"数据库总连接数"和"当前活跃连接数"，判断是否需要释放连接。
   
   
   **可能原因**：数据库连接数过多，可能会导致业务侧无法正常连接，也会导致实例全量备份和增量备份失败，影响业务的正常使用。
   **解决方案** ：
   1. 请及时排查业务侧连接是否有效，优化实例连接，释放不必要的连接。
   
   2. 如果设定值为default，可以对数据库进行规格扩容，用以提高max_connections的值，具体请参见[变更数据库规格](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0092.html)。
   
   3. 云监控服务目前可以监控数据库CPU、内存、磁盘、连接数等指标，并且设置告警策略，出现告警时可以提前识别风险。支持的监控指标请参见[支持的监控指标](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0085.html)。
     
7. **连接失败的常见报错**
   通过命令连接数据库实例时，可能出现的报错信息和解决方案如下所示：
   - ERROR 2013：Lost connection to MySQL server during query 连接超时参数"wait_timeout"和"interactive_timeout"设置过小，TaurusDB会自动断开超时的空连接。具体请参见[客户端连接实例后会自动断开](https://support.huaweicloud.com/trouble-taurusdb/taurusdb_trouble_0109.html)。
     
   
   - ERROR 1045 : Access denied for user 'root'@'192.168.0.30' (using password: YES) 排除是否密码错误问题，确认该主机是否有连接数据库实例的权限，具体请参见[连接数据库报错Access denied](https://support.huaweicloud.com/trouble-taurusdb/taurusdb_trouble_0106.html)。
     
   
   - 报错 SSL routines：tls_early_post_process_client_hello:unsupported protocol 从报错信息可以看出，可能和TLS版本相关，查看TaurusDB TLS版本，升级客户端TLS版本，具体请参见[客户端TLS版本不一致导致SSL连接失败](https://support.huaweicloud.com/trouble-taurusdb/taurusdb_trouble_0104.html)。
     
   
   - 使用JDBC连接数据库报错：unable to find certification path to requested target 可能使用的是mariadb的jar包，而非MySQL的官方驱动包，而mariadb与官方的使用方法略有区别，具体请参见[mariadb-connector SSL方式连接数据库失败](https://support.huaweicloud.com/trouble-taurusdb/taurusdb_trouble_0107.html)。
     
    
8. **如果上述方法均不能解决您的疑问，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)处理。**
 
