API 文档

连接 MongoDB 实例

最近更新时间:2020-11-18 17:26:16

实例初始化后,可以通过 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 控制台 的数据库管理页查看用户账号,以及管理权限以满足业务需求。

  • 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 控制台 创建其他用户,这些用户被分成了两类,分别采用不同的认证机制,分类如下:

用户名 认证机制 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 方式

目录