连接 MongoDB 实例

最后更新时间:2021-06-10 15:48:32

    实例初始化后,可以通过 MongoDB shell 或者各语言驱动访问数据库,并进行各种管理操作。

    使用 云服务器 CVM 连接自动分配给云数据库的内网地址,这种连接方式使用内网高速网络,延迟低。云服务器和数据库须是同一账号,且同一个 VPC 内(保障同一个地域),或同在基础网络内。暂不支持外网访问方式。

    说明:

    对于不同的 VPC 下(包括同账号/不同账号,同地域/不同地域)的云服务器和数据库,内网连接方式请参见 云联网

    前提条件

    连接云数据库 MongoDB 最低驱动版本需要3.2,建议使用最新版的客户端驱动以保证最好的兼容性,包括 Shell 套件、Java jar 包、PHP 扩展、Node.js 模块等,具体请参见 MongoDB 官网驱动介绍

    连接方式

    shell 方式

    mongo shell 是 MongoDB 自带的一种交互式 JavaScript shell,可在 shell 中使用命令行与 MongoDB 实例交互。您可以使用 mongo shell 查询、更新数据,及执行管理操作。

    mongo shell 是 MongoDB 发行版的一部分,您需要先下载和安装 MongoDB,再使用 mongo shell 连接您的云数据库 MongoDB。MongoDB 发行版下载请参见 下载地址,具体连接步骤如下:

    
       cd <mongodb installation dir>
    ./bin/mongo -umongouser -plxh2081* 172.x.x.56:27017/admin
    
    说明:

    上例中,-u 参数指定 用户名,-p 参数指定密码,172.x.x.56和27017分别指定 MongoDB 实例的 IP 和端口。

    URI 方式

    MongoDB 既可以用传统的传参方式进行连接,同时大部分的驱动程序也支持 URI 形式连接。MongoDB 官方推荐使用 URI 的方式连接 MongoDB。

    说明:

    MongoDB 副本集实例(4.0版)连接方式与其他版本规格有所不同,4.0版提供了3个 IP 进行访问,分别对应副本集的3个节点。现网业务连接时,建议在连接串中配置3个 IP,连接更加安全高效。请参见 副本集实例(4.0版)连接说明

    典型的 URI 如下:

    • 例1
      
      mongodb://username:password@IP:27017/admin
      
    • 例2
      
      mongodb://username:password@IP:27017/somedb?authSource=admin
      
    • 例3
      
      mongodb://username:password@IP:27017/somedb?authSource=admin&readPreference=secondaryPreferred
      

    URI 组成的各部分解释如下:

    组成部分 含义 是否必须
    mongodb:// 一个特定的字符串,表示 MognoDB 协议 必须
    username 用于登录 MongoDB 的用户名 必须,参见本页 默认用户
    password 用于登录 MongoDB 的用户密码 必须
    IP:27017 MongoDB 的 IP 和端口 必须
    /admin 要认证的数据库,云数据库 MongoDB 固定为 admin 必须,参见本页 认证数据库
    authMechanism=MONGODB-CR 认证机制 参见本页 认证机制
    authSource=admin 身份认证所用库,云数据库 MongoDB 固定为 admin 必须,参见本页 认证数据库
    readPreference=secondaryPreferred 可以设置优先读从库 非必须,参见本页 读操作的主从优先级

    此处仅列举了一部分 MongoDB 连接 URI 的参数,更多内容请参见 MongoDB 官网文档

    #### 默认用户 云数据库 MongoDB 默认用户因版本而异,对于最新的实例,我们內建了 rwuser 和 mongouser 两个默认用户。旧实例只有 rwuser,旧实例我们会进行升级,升级之前会联系您。您可以通过 [MongoDB 控制台](https://console.cloud.tencent.com/mongodb) 的数据库管理页查看用户账号,以及管理权限以满足业务需求。
    • rwuser(MONGODB-CR 认证)URI 示例
      rwuser 是唯一使用 MONGODB-CR 认证的用户:

      
      mongodb://rwuser:password@10.66.100.186:27017/admin?authMechanism=MONGODB-CR
      或者
      mongodb://rwuser:password@10.66.100.186:27017/somedb?authMechanism=MONGODB-CR&authSource=admin
      
    • mongouser(SCRAM-SHA-1 认证)URI 示例
      mongouser 以及在 MongoDB 控制台 创建的用户均使用 SCRAM-SHA-1 认证:

      
      mongodb://mongouser:password@10.66.100.186:27017/admin
      或者
      mongodb://mongouser:password@10.66.100.186:27017/somedb?authSource=admin
      
    #### 认证数据库 云数据库 MongoDB 统一使用 admin 库作为登录鉴权的认证数据库,所以在 URI 中端口后面必须加上“/admin”以指定认证库,通过认证后再切换到具体业务数据库进行读写操作,URI 示例:
    
    mongodb://username:password@IP:27017/admin
    
    当然,也可通过直接指定读写目标数据库和额外的认证库参数(authSource=admin)来直达目标数据库,URI 示例:
    
    mongodb://username:password@IP:27017/somedb?authSource=admin
    
    综上,您必须选择一种方式将 admin 作为认证库代入 URI 中。 #### 认证机制 MongoDB 支持多种认证机制,目前官方推荐 SCRAM-SHA-1。 云数据库 MongoDB 支持 MONGODB-CR 和 SCRAM-SHA-1 两种认证方式。 云数据库 MongoDB 内建了两个默认用户 rwuser 和 mongouser,同时还可在 [MongoDB 控制台](https://console.cloud.tencent.com/mongodb) 创建其他用户,这些用户被分成了两类,分别采用不同的认证机制,分类如下:
    用户名 认证机制 URI 处理
    rwuser MONGODB-CR 必须加上参数 “authMechanism=MONGODB-CR”
    mongouser 以及在控制台创建的用户 SCRAM-SHA-1(推荐) 不用加任何参数
    #### 读操作的主从优先级 云数据库 MongoDB 提供了一个负载均衡 IP 用于访问整个副本集,如需指定访问从库读,请在 URI 里设置 readPreference 参数,具体取值含义如下:
    取值 含义 是否默认
    primary 只读主节点
    primaryPreferred 主节点优先,如主节点不可用,则读从节点
    secondary 只读从节点,如从节点不可用会报错
    secondaryPreferred 从节点优先,如从节点不可用,则读主节点

    设置优先读取从节点可以按示例拼接 URI:

    
    mongodb://username:password@IP:27017/admin?readPreference=secondaryPreferred
    

    连接示例

    shell 方式

    URI 方式