Mongo Shell是MongoDB自带的数据库管理工具,您可以将Mongo Shell工具下载并安装至客户端(本地服务器或ECS服务器),用于连接云数据库MongoDB副本集实例。本文介绍通过Mongo Shell连接云数据库MongoDB副本集实例的方法。

前提条件

已创建云数据库MongoDB副本集实例。

背景信息

云数据库MongoDB副本集实例提供的默认数据库admin,用于管理默认数据库账号root的信息,建议使用admin之外的数据库实现业务需求(即不对admin库进行任何操作)。

准备工作

  • 下载并安装与云数据库MongoDB实例数据库版本相同的MongoDB至客户端(本地服务器或云服务器ECS实例),安装方法请参见Install MongoDB
    如果应用部署在ECS实例,您需要确保云数据库MongoDB实例和ECS实例满足以下条件,以保证网络的连通性。ECS实例信息的查看方法请参见查看实例信息
    • 所在地域相同,并建议所在可用区相同(以减少网络延时)。
    • 网络类型相同。
      说明
      • 专有网络具有更高的安全性,建议使用专有网络。
      • 如果网络类型为专有网络,需确保使用相同的专有网络ID。
      • 如果您需要使用专有网络,但ECS实例的网络类型为经典网络,您可以将ECS实例网络类型转换为专有网络,具体请参见ECS实例从经典网络迁移到专有网络
  • 将客户端IP地址添加至云数据库MongoDB实例的白名单中,添加方法请参见设置白名单
    说明 如果您需要使用公网地址连接云数据库MongoDB实例,您可以手动申请公网地址,申请方法请参见(可选)申请公网连接地址
  • 如果需要连接只读节点,请确保云数据库MongoDB实例中已存在只读节点,如果没有,您可以添加只读节点,添加方法请参见变更副本集实例配置

操作步骤

  1. 登录MongoDB管理控制台
  2. 在页面左上角,选择实例所在的资源组和地域。
  3. 在左侧导航栏,单击副本集实例列表
  4. 单击目标实例ID或目标实例所在行操作列的更多,并选择管理
  5. 在目标实例页面的左侧导航栏,单击数据库连接
  6. 查看并获取云数据库MongoDB副本集实例的连接地址。
    连接地址
    项目 说明
    地址类型
    • 私网连接
      • 专有网络:专有网络是一种隔离的网络环境,安全性和性能均高于传统的经典网络。 云数据库MongoDB实例默认提供专有网络连接地址,通过专有网络连接云数据库MongoDB单节点实例可以获取更高的安全性和性能。
      • 经典网络:仅依靠云数据库MongoDB实例的安全组或白名单策略阻挡非法访问。
    • 公网连接:由于通过公网连接实例存在一定的安全风险,云数据库MongoDB实例默认未提供公网连接地址。如果您要使用公网地址连接云数据库MongoDB实例,您可以手动申请公网连接地址,申请方法请参见(可选)申请公网连接地址
    Primary 主节点,连接该节点可执行数据库的读写操作。当发生主备切换时,主节点角色将发生变化,您需要连接新的主节点确保读写操作不受影响。
    格式:
    <host>:<port>
    说明
    • <host>:云数据库MongoDB副本集实例主节点的地址。
    • <port>:云数据库MongoDB副本集实例主节点的端口号。
    示例:
    dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717
    Secondary 从节点,连接该节点仅能执行数据库的读操作。您也可以扩展从节点的数量,扩展方法请参见变更副本集实例配置
    格式:
    <host>:<port>
    说明
    • <host>:云数据库MongoDB副本集实例从节点的地址。
    • <port>:云数据库MongoDB副本集实例从节点的端口号。
    示例:
    dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717
    ReadOnly 只读节点,连接该节点仅能执行数据库的读操作。您也可以扩展只读节点的数量,扩展方法请参见变更副本集实例配置
    格式:
    <host>:<port>
    说明
    • <host>:云数据库MongoDB副本集实例只读节点的地址。
    • <port>:云数据库MongoDB副本集实例只读节点的端口号。
    示例:
    dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717
    ReadOnlyConnectionStringURI 只读节点的高可用连接地址,通过该地址连接可以实现只读节点间的负载均衡及高可用。在拥有多个只读节点的情况下,建议应用程序通过此连接串地址连接只读节点。当实例中的某个只读节点出现故障时,系统无缝切换到下一个只读节点,不会影响应用的读操作。
    格式:
    mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?<option>
    说明
    • mongodb://:前缀,代表这是一个只读节点的ConnectionStringURI连接地址。
    • <username>:云数据库MongoDB副本集实例的账号名,默认为root。
    • <password>:云数据库MongoDB副本集实例账号名对应的密码。
    • <host>:云数据库MongoDB副本集实例只读节点的地址。
    • <port>:云数据库MongoDB副本集实例只读节点的端口号。
    • <database>:云数据库MongoDB副本集实例的鉴权数据库名,即数据库账号所属的数据库。默认为admin。如果您需要使用其他数据库,您可以先在该数据库中创建账号,然后使用该账户。创建账号的方法请参见db.createUser()
    • <option>:其他信息。
    示例:
    mongodb://root:****@dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717/admin?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=mgset-45816505
    ConnectionStringURI 云数据库MongoDB副本集实例的高可用连接地址,通过该地址连接可以实现负载均衡及高可用。生产环境的应用程序建议通过此连接串地址连接实例。当实例中的某个节点出现故障时,不会因为主备切换而影响应用的读写操作。
    格式:
    mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?<option>
    说明
    • mongodb://:前缀,代表这是一个ConnectionStringURI连接地址。
    • <username>:云数据库MongoDB副本集实例的账号名,默认为root。
    • <password>:云数据库MongoDB副本集实例账号名对应的密码。
    • <host>:云数据库MongoDB副本集实例节点的地址。
    • <port>:云数据库MongoDB副本集实例节点的端口号。
    • <database>:云数据库MongoDB副本集实例的鉴权数据库名,即数据库账号所属的数据库。默认为admin。如果不指定数据库名,则默认为test。如果您需要使用其他数据库,您可以先在该数据库中创建账号,然后使用该账户。创建账号的方法请参见db.createUser()
    • <option>:其他信息。
    示例:
    mongodb://root:****@dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717,dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717,dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-45816505
  7. 根据业务需要,执行如下对应命令,在安装有MongoDB的客户端(本地服务器或ECS服务器)上连接云数据库MongoDB副本集实例。
    • (推荐)高可用连接方式
      • ConnectionStringURI:使用ConnectionStringURI连接数据库,可确保连接的节点始终为Primary节点,不会因为主备切换而影响应用的读写操作。
      • ReadOnly ConnectionStringURI:在拥有多个只读节点的情况下,可使用ReadOnly ConnectionStringURI连接只读节点。当实例中的某个只读节点出现故障时,系统会无缝切换到下一个只读节点,不会影响应用的读操作。
      命令格式:
      mongo "<连接串地址>"    
      说明
      • 双引号须为英文双引号("")。
      • <连接串地址>:实例的ConnectionStringURI地址或ReadOnly ConnectionStringURI地址。

        ConnectionStringURI或ReadOnly ConnectionStringURI地址中的****需要替换为数据库密码。数据库密码设置请参见设置密码

    • 连接一个节点(Primary、Secondary或ReadOnly节点)
      mongo --host <host>:<port> -u <username> -p --authenticationDatabase <database>
      说明
      • <host>:云数据库MongoDB副本集实例Primary、Secondary或ReadOnly节点的地址。
      • <port>:云数据库MongoDB副本集实例Primary、Secondary或ReadOnly节点的端口号。
      • <username>:云数据库MongoDB副本集实例的账号名,初始账号为root。不建议直接使用root账号连接数据库。您可以根据业务需求创建用户并分配权限,详情请参见MongoDB数据库账号权限管理
      • <database>:鉴权数据库名,即数据库账号所属的数据库。当数据库账号为root时,对应的数据库为admin。如果不指定数据库名,则默认为test。如果您希望指定其他数据库,请先在该数据库中使用db.createUser()命令创建账号,然后再使用该账号进行连接。
      示例:
      mongo --host dds-bp1366caac83d****.mongodb.rds.aliyuncs.com:3717 -u root -p --authenticationDatabase admin
      在命令行提示Enter password:时,输入数据库账号对应的密码并按回车键确认。如果忘记了root账号的密码,您可以重新设置密码,设置方法请参见(可选)重置密码
      说明 输入密码时,密码字符是不可见的。
说明 实例连接成功后,建议您使用admin之外的数据库实现业务需求。

常见的连接场景

相关问题