通过命令行、客户端连接RDS MySQL实例

更新时间:
复制为 MD 格式

购买RDS MySQL实例并完成必要配置(创建账号、设置白名单)后,您就可以通过命令行、客户端连接实例。本文介绍内网连接、外网连接的方法和无法连接的常见报错。

前提条件

建议

  • 为降低延迟并提高稳定性,建议优先使用ECS内网连接RDS实例。内网连接需满足以下全部条件:

    ECSRDS实例须在同一个阿里云账号、同一地域及同一VPC下,且ECS的私网IP添加到RDS白名单,您可以通过ECS实例列表查看私网IP。

  • 若使用公网连接,建议通过连接字符串来连接数据库。

    说明
    • 通过curl ipinfo.io/ip(推荐)或curl ifconfig.me查询本地客户端公网IP。

    • 公网IP在数据库升级或变更操作时可能会发生变化。若已将本地IP地址添加到白名单中,但仍然无法连接请参考解决方案处理。

操作步骤

使用命令行连接

本文以Linux系统为例连接RDS MySQL实例,您需要提前安装MySQL。安装方法:

  • CentOS:执行sudo yum install mysql

  • Ubuntu:执行sudo apt-get update,并执行sudo apt install mysql-server

  1. 登录到需要连接RDS的服务器,例如ECS服务器或本地服务器。

    说明

    登录ECS的操作请参见ECS快速入门里的连接ECS实例部分。

  2. 执行连接命令。

    mysql -h连接地址 -P端口 -u用户名 -p
    说明
    • 执行命令后输入密码。

    • 大写字母P代表端口,小写字母p代表密码。

    • 连接地址和端口:RDS实例地址和端口。

      场景

      需获取的RDS实例地址

      如何获取

      满足内网连接条件

      RDS内网地址

      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

      2. 单击查看连接详情,即可查看RDS实例地址和端口号。在基本信息区域的网络类型后方,单击查看连接详情

      说明
      • 需要点击开通外网地址,才会显示外网地址。

      • 对于集群系列实例,修改主节点地址需要在集群读写连接区域操作,修改备节点地址需要在集群可读连接区域操作。

      ECS实例访问RDS实例,但不满足内网访问的条件

      RDS外网地址

      从本地设备访问RDS实例

    • 用户名和密码:在RDS实例详情页账号管理页面获取。

    命令示例

    root@xxx            -> mysql -hrxxx.mysql.rds.aliyuncs.com -P3306 -uxxx -p
    Enter password:

    连接成功

    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 51325
    Server version: 8.0.18 Source distribution
    说明

    如果连接报错,请参见连接失败的常见报错

使用客户端(MySQL Workbench)连接

可以使用其他通用的MySQL客户端连接到RDS MySQL实例,本步骤以MySQL Workbench 8.0.29版本为例,其它客户端的操作类似。

  1. 安装MySQL Workbench

  2. 打开MySQL Workbench,选择Database > Connect to Database

  3. 输入连接信息,单击OK

    Connection Method 下拉框中选择 Standard (TCP/IP)

    • HostnamePort:RDS实例地址和端口。

      场景

      需获取的RDS实例地址

      如何获取

      满足内网连接条件

      RDS内网地址

      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

      2. 单击查看连接详情,即可查看RDS实例地址和端口号。在基本信息区域的网络类型后方,单击查看连接详情

      说明
      • 需要点击开通外网地址,才会显示外网地址。

      • 对于集群系列实例,修改主节点地址需要在集群读写连接区域操作,修改备节点地址需要在集群可读连接区域操作。

      ECS实例访问RDS实例,但不满足内网访问的条件

      RDS外网地址

      从本地设备访问RDS实例

    • UsernamePassword:在RDS实例详情页账号管理页面获取。

使用客户端(Navicat)连接

  1. 启动Navicat客户端

  2. 在左上角单击Connection,选择需要连接的数据库类型。

    说明

    如果Navicat版本过低,没有Alibaba Cloud菜单,可以直接选择MySQL、PostgreSQL等数据库。

    在 Navicat 顶部工具栏单击 Connection,在下拉菜单中选择 Alibaba Cloud,然后在展开的子菜单中选择目标数据库类型,例如 Alibaba Cloud ApsaraDB for RDS (MySQL)...Alibaba Cloud ApsaraDB for RDS (PostgreSQL)...Alibaba Cloud ApsaraDB for RDS (SQL Server)...

  3. 输入要连接的RDS实例信息,参数说明如下。

    参数

    说明

    Connection Name

    自定义连接名称。

    Host

    RDS实例的内网地址或外网地址

    • 如果客户端部署在ECS实例上,且ECS实例与RDS实例处于同一阿里云账号、同一地域和同一VPC,请使用内网地址。

    • 其它情况请使用外网地址。

    Port

    RDS实例的内网或外网端口。例如,MySQL默认端口为3306。

    User Name

    要访问RDS实例的账号名称。您可前往RDS实例详情页,在账号管理页面查看。

    Password

    用户名对应的密码。

  4. 单击OK

    说明

    如果实例开启了高安全白名单模式,且需要通过公网访问,请将公网设备IP添加到高安全白名单的经典网络分组下。

    通过数据库客户端(如 Navicat)成功连接至 MySQL 实例后,左侧连接树中可查看到 busudabinformation_schemamysql 等数据库,表明连接配置正确。

ECS跨地域或跨账号连接RDS

  • 公网(外网)连接:可以使用RDS实例的外网连接地址,通过外网跨地域/跨账号连接,进出RDS实例的外网流量均不收费。

  • 内网(私网)连接:正常情况下,当ECSRDS在不同地域或不同账号时,无法通过内网连接(VPC互相隔离,无法互通)。但是,您可以使用VPC对等连接或云企业网,连通两个不同的VPC,使ECS可以跨地域或跨账号访问RDS实例。

    • VPC对等连接:支持跨地域/跨账号VPC互连,成本低,但配置复杂度相对较高,适用于少量VPC互连的简单场景。

    • 云企业网:支持跨地域/跨账号VPC互连,易配置,但成本相对较高,适用于多个VPC互连的复杂场景。

连接失败的常见报错

mysql command not found

原因是未安装MySQL。可按照如下方法快速安装:

  • CentOS:执行sudo yum install mysql

  • Ubuntu:执行sudo apt-get update,并执行sudo apt install mysql-server

SSL connection error: SSL is required but the server doesn't support it

使用部分版本的MySQL Workbench时,Standard TCP/IP连接要求必须有SSL加密,可下载本文中的版本进行常规连接。

错误码10060:Can't connect to MySQL server on 'rm-bpxxx.mysql.rds.aliyuncs.com'(10060)

  • (多数情况)RDS白名单设置问题,客户端IP地址未被添加到RDS实例的白名单中。

    解决方法:检查并正确设置IP白名单。如果是本地客户端连接,请先通过curl ipinfo.io/ip查询本地客户端外网IP加入白名单。

  • (少数情况)不满足内网连接条件,却使用内网地址连接。

    解决方法:申请外网地址并使用外网地址连接。

错误码113:Can't connect to MySQL server on 'rm-bpxxx.mysql.rds.aliyuncs.com'(113)

路由冲突。参考无法pingRDS内网地址处理方法解决。

Cannot Connect to Database Server

Your connection attempt failed for user 'xx" to the MySQL server

ping RDS内网地址时,报错Destination Host Unreachable

路由冲突。参考无法pingRDS内网地址处理方法解决。

Access denied for user 'xxx'@'xxx'(using password:YES)

输入的账号密码错误。可以在RDS账号管理页面管理账号和密码。

Unknown MySQL server host 'xxx'(11001)

输入的RDS实例地址错误。正确格式为rm-xxxxxx.mysql.rds.aliyuncs.com。

常见问题

  • Q:RDS有弹性公网IP功能吗?

    A:RDS暂无此功能。

  • Q:如何解决本地计算机使用Telnet连接云数据库失败的问题?

    A:通过Telnet连接云数据库无法成功建立连接,您可以检查以下几点:

    • 检查云数据库的服务端口是否正确,并且是否对外网开放。

    • 检查云数据库的安全组或防火墙规则,确保允许您本地的IP地址连接。

    • 检查使用的连接参数(如主机名、端口号等)是否正确。

    • 检查本地设备的防火墙规则,以确保未阻止RDS所需的端口。

    • 如果可能,尝试使用其他工具(如 mysql 命令行客户端或数据库管理工具)连接云数据库,以排除Telnet特定的问题。

  • Q:其他用户如何访问我的数据库?

    A:按照以下步骤操作:

    1. 创建普通账号并授权目标数据库。

    2. 申请外网地址

    3. 设置IP白名单(若对方使用阿里云服务ECS,可添加ECS实例的内网IP或所在安全组ID;若对方使用本地MySQL客户端,可添加其主机IP地址)。

    4. 将外网地址、数据库名称及账号密码告知对方。

    5. 使用命令行连接数据库

相关文档