
# 使用MySQL命令行内网连接实例
当应用部署在弹性云服务器上，且该弹性云服务器与RDS for MySQL实例处于同一区域，同一VPC时，建议单独使用内网IP连接RDS for MySQL实例。
本章节以应用部署在Linux弹性云服务器为例，介绍SSL加密内网连接RDS for MySQL实例。SSL连接实现了数据加密功能，具有更高的安全性。
非SSL加密连接RDS for MySQL实例，请参见[购买并通过MySQL客户端连接RDS for MySQL实例](https://support.huaweicloud.com/qs-rds-mysql/rds_02_0047.html)。
#### 步骤1：购买ECS
1. [登录管理控制台](https://console.huaweicloud.com/ecm/?locale=zh-cn#/ecs/manager/vmList)，查看是否有弹性云服务器。
   - 有Linux弹性云服务器，执行[3]。
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/notice_3.0-zh-cn.png)
     ECS镜像是CentOS时，版本号选CentOS 7.4 64bit。
     
   
   - 有Windows弹性云服务器，参考[购买并通过MySQL-Front连接RDS for MySQL实例](https://support.huaweicloud.com/qs-rds-mysql/rds_02_0147.html)。
   
   - 无弹性云服务器，执行[2]。
   
   
   图1ECS实例   
   ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002212223472.png "点击放大") 
2. 购买弹性云服务器时，选择Linux操作系统，例如CentOS 7.4 64bit。
   由于需要在ECS下载MySQL客户端，因此需要为ECS绑定弹性公网IP（EIP），并且选择与RDS for MySQL实例相同的区域、VPC和安全组，便于RDS for MySQL和ECS网络互通。
   购买Linux弹性云服务器请参考《弹性云服务器用户指南》中"[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)"章节。
   
3. 在ECS实例基本信息页，查看ECS实例的区域和VPC。
   图2ECS基本信息   
   ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247223561.png "点击放大") 
4. 在RDS for MySQL实例概览页，查看RDS实例的区域和VPC。
   图3MySQL概览   
   ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247223577.png "点击放大") 
5. 确认ECS实例与RDS for MySQL实例是否处于同一区域、同一VPC内。
   - 是，执行[步骤2：测试连通性并安装MySQL客户端]。
   
   - 如果不在同一区域，请重新购买ECS实例。不同区域的云服务之间内网互不相通，无法访问实例。请就近选择靠近您业务的区域，可减少网络时延，提高访问速度。
   
   - 如果不在同一VPC，可以修改ECS的VPC，请参见[切换虚拟私有云](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0504.html)。
    
 
 #### 步骤2：测试连通性并安装MySQL客户端
1. 登录ECS实例，请参见《弹性云服务器用户指南》中"[通过VNC登录Linux ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0136.html)"。
2. 在RDS"实例管理"页面，单击实例名称进入"概览"页面。
3. 选择"连接管理"，在"连接信息"模块获取实例的内网地址（或者内网域名）和数据库端口。
   图4连接信息   
   ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247223549.png "点击放大") 
4. 在ECS登录后页面，测试是否可以正常连接到在[3]中获取的内网地址的端口。
   ```
   curl -kv 内网地址:端口
   ```
   示例：
   ```
   curl -kv 192.168.0.4:3306
   ```
   - 如果可以通信，说明网络正常，继续执行[5]。
     图5网络正常   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002287907060.png "点击放大") 
   
   - 如果无法通信，请检查安全组规则。
     - 查看ECS的安全组的出方向规则，如果目的地址不为"0.0.0.0/0"且协议端口不为"全部"，需要将RDS实例的内网IP地址和端口添加到出方向规则。
       图6ECS的安全组   
       ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002212223480.png "点击放大") 
     
     - 查看RDS的安全组的入方向规则，需要将ECS实例的私有IP地址和端口添加到入方向规则，具体操作请参考[设置安全组规则](https://support.huaweicloud.com/usermanual-rds-mysql/rds_11_0009.html)。
      
    
5. 选择方法一或方法二，将MySQL客户端安装包导入ECS，并安装客户端。
 
- [方法一：执行命令获取安装包]
  1. 在ECS上，执行以下命令下载Linux系统的MySQL客户端安装包，该方式需要为ECS绑定EIP。
     - [8.0版本安装包](https://dev.mysql.com/get/mysql-community-client-8.0.28-1.el6.x86_64.rpm)：
       ```
       wget https://dev.mysql.com/get/mysql-community-client-8.0.28-1.el6.x86_64.rpm
       ```
       
     
     - [5.7版本安装包](https://dev.mysql.com/get/mysql-community-client-5.7.38-1.el6.x86_64.rpm)：
       ```
       wget https://dev.mysql.com/get/mysql-community-client-5.7.38-1.el6.x86_64.rpm
       ```
       
     
     
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/note_3.0-zh-cn.png)
     建议您下载的MySQL客户端版本高于已创建的RDS实例中数据库版本。
     
  
  2. 执行以下命令安装MySQL客户端。
     - 8.0版本：
       ```
       rpm -ivh --nodeps mysql-community-client-8.0.28-1.el6.x86_64.rpm
       ```
       图7安装客户端   
       ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002322622409.png "点击放大") 
     
     - 5.7版本：
       ```
       rpm -ivh --nodeps mysql-community-client-5.7.38-1.el6.x86_64.rpm
       ```
       
     
     
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/note_3.0-zh-cn.png)
     - 如果安装过程中报conflicts，可增加replacefiles参数重新安装，如下：
       ```
       rpm -ivh --replacefiles mysql-community-client-安装包版本号-1.el6.x86_64.rpm
       ```
       
     
     
     
     - 如果安装过程中提示需要安装依赖包，可增加nodeps参数重新安装，如下：
       ```
       rpm -ivh --nodeps mysql-community-client-安装包版本号-1.el6.x86_64.rpm
       ```
       
       
   
- [方法二：浏览器下载安装包]
  1. 在浏览器下载Linux系统的MySQL客户端安装包，然后将安装包上传到ECS。 您可以使用任何终端连接工具（如WinSCP、PuTTY等工具）将安装包上传至ECS。
     - 8.0版本： 打开[链接](https://downloads.mysql.com/archives/community/)，以mysql-community-client-8.0.28-1.el6.x86_64.rpm为例，下载安装包。
       图8下载MySQL 8.0安装包   
       ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002321124849.png "点击放大") 
     
     - 5.7版本： 打开[链接](https://downloads.mysql.com/archives/community/)，以mysql-community-client-5.7.38-1.el6.x86_64.rpm为例，下载安装包。
       图9下载MySQL 5.7安装包   
       ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002321091789.png "点击放大") 
     
     
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/note_3.0-zh-cn.png)
     建议您下载的MySQL客户端版本高于已创建的RDS实例中数据库版本。
     
  
  2. 执行以下命令安装MySQL客户端。
     - 8.0版本：
       ```
       rpm -ivh --nodeps mysql-community-client-8.0.28-1.el6.x86_64.rpm
       ```
       图10安装客户端   
       ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002287909904.png "点击放大") 
     
     - 5.7版本：
       ```
       rpm -ivh --nodeps mysql-community-client-5.7.38-1.el6.x86_64.rpm
       ```
       
     
     
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/note_3.0-zh-cn.png)
     - 如果安装过程中报conflicts，可增加replacefiles参数重新安装，如下：
       ```
       rpm -ivh --replacefiles mysql-community-client-安装包版本号-1.el6.x86_64.rpm
       ```
       
     
     
     
     - 如果安装过程中提示需要安装依赖包，可增加nodeps参数重新安装，如下：
       ```
       rpm -ivh --nodeps mysql-community-client-安装包版本号-1.el6.x86_64.rpm
       ```
       
       
   
#### 步骤3：使用命令行连接实例
在RDS"实例管理"页面，单击实例名称进入"概览"页，在"SSL"处，查看SSL开启状态。
- SSL未开启（默认），使用[非加密连接]。
- SSL已开启，只能使用[SSL加密连接]。加密连接实现了数据加密功能，具有更高的安全性。
 
- [非加密连接]
  
  1. 在ECS上，执行以下命令连接RDS for MySQL实例。
     ```
     mysql -h <host> -P <port> -u <userName> -p
     ```
     示例：
     ```
     mysql -h 172.16.0.31 -P 3306 -u root -p
     ```
     表1参数说明 
     | 参数             | 说明                                                                                                                                                                              |
     |:---|:---|
     | \<*host*\>     | 内网地址或内网域名，在[3]中获取。 说明： 如果数据库实例是通过内网域名访问，修改实例的内网IP不会影响用户业务。 |
     | *\<port\>*     | 数据库端口，在[3]中获取。默认3306。                                                                                                                  |
     | \<*userName*\> | 管理员账号root。                                                                                                                                                                      |
        
     
  
  2. 出现如下提示时，输入数据库账号对应的密码：
     ```
     Enter password:
     ```
     图11连接成功   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247223573.png "点击放大") 
   
- [SSL加密连接]
  
  1. 在RDS"实例管理"页面，单击实例名称进入"概览"页。
  
  2. 单击"SSL"处的"下载"，下载"Certificate Download"压缩包，解压后获取根证书（ca.pem）和捆绑包（ca-bundle.pem）。
  
  3. 将根证书（ca.pem）上传到ECS，建议和MySQL客户端安装包放在同一个目录。
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/note_3.0-zh-cn.png)
     - 您可以使用任何终端连接工具（如WinSCP、PuTTY等工具）上传根证书。
     
     - 推荐使用TLS v1.2及以上协议，低于该版本可能存在安全风险。您可以通过修改参数"loose_tls_version"的值设置加密协议，具体操作详见[修改RDS for MySQL实例参数](https://support.huaweicloud.com/usermanual-rds-mysql/rds_configuration.html)。
     
     - 根证书捆绑包（ca-bundle.pem）包含2017年4月之后的新根证书和原有根证书。
     
     - ca.pem和ca-bundle.pem都可以实现SSL连接，ca-bundle.pem文件包含ca.pem，使用ca.pem即可。
     
     - RDS for MySQL实例不支持X509认证方式。
       
  
  4. 在ECS上，执行以下命令连接RDS for MySQL实例。
     ```
     mysql -h <host> -P <port> -u <userName> -p --ssl-ca=<caName>
     ```
     示例：
     ```
     mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=ca.pem
     ```
     表2参数说明 
     | 参数             | 说明                                                                                                                                                                               |
     |:---|:---|
     | \<*host*\>     | 内网地址或内网域名，在[3]中获取。 说明： 如果数据库实例是通过内网域名访问，修改实例的内网IP不会影响用户业务。 |
     | *\<port\>*     | 数据库端口，在[3]中获取。默认3306。                                                                                                                   |
     | \<*userName*\> | 管理员账号root。                                                                                                                                                                       |
     | \<*caName*\>   | CA证书名称。                                                                                                                                                                          |
        
     
  
  5. 出现如下提示时，输入数据库账号对应的密码：
     ```
     Enter password:
     ```
     图12连接成功   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247223557.png "点击放大") 
   
#### 常见问题
#### 如果密码忘记了怎么办？
在"实例管理"页面，选择指定的实例，选择"更多 \> 重置密码"，输入新密码。
#### 连接失败的常见报错
- \[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实例时出现该报错，请检查用户名或密码是否正确。
  
- ERROR 2013：Lost connection to MySQL server during query 连接超时参数"wait_timeout"和"interactive_timeout"设置过小，RDS for MySQL会自动断开超时的空连接。具体请参见[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)。
  
更多连接失败的排查方法，请参见[RDS实例连接失败怎么办](https://support.huaweicloud.com/rds-mysql_faq/rds_faq_0218.html)。
#### 后续操作
登录实例后，您可以创建数据库，进行数据迁移等操作，具体请参见：
- [通过界面可视化创建MySQL数据库](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0019.html)
- [通过调用API创建MySQL数据库](https://support.huaweicloud.com/api-rds/rds_06_0007.html)
- [通过DAS管理MySQL数据库](https://support.huaweicloud.com/usermanual-das/das_04_0031.html)
- [迁移方案总览](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0001_03.html)
 
