有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
实例创建成功之后,您可以通过 MongoDB shell 或者各语言驱动访问数据库,并进行读写、查询等操作。

基本介绍

shell 方式

MongoDB Shell 是 MongoDB 自带的一种交互式 JavaScript 命令行管理工具, 对很多常用的命令进行了封装,您可以在云服务器 CVM 上安装 MongoDB Shell 工具,然后使用 Shell 命令连接 MongoDB 实例,进而对数据库进行读写、更新或者查询等操作。
注意:
使用 云服务器 CVM 连接自动分配给云数据库的内网地址,这种连接方式使用内网高速网络,延迟低。云服务器和数据库须是同一账号,且同一个 VPC 内(保障同一个地域),或同在基础网络内。

URI 方式

URI 是统一资源标志符(Uniform Resource Identifier),是 Web 上每一种可用资源的唯一标识。MongoDB 官方推荐使用 URI 的方式连接 MongoDB,大部分的驱动程序也支持 URI 形式连接。
典型的 URI 连接示例如下:
mongodb://username:password@IP:27017/admin
mongodb://username:password@IP:27017/somedb?authSource=admin
mongodb://username:password@IP:27017/somedb?authSource=admin&readPreference=secondaryPreferred
mongodb://mongouser:******@10.X.X.X:27017,10.X.X.X:27017/test?replicaSet=cmgo-*******&authSource=admin
URI 各个组成部分含义解释如下表所示。更多内容,请参见 MongoDB 官网文档
组成部分
含义
是否必须
mongodb://
一个特定的字符串,表示 MongoDB 协议
username
用于登录 MongoDB 的用户名
是,更多信息,请参见 默认用户
password
用于登录 MongoDB 的用户密码
hostX:portX
MongoDB 的 IP 和端口
/admin
要认证的数据库,云数据库 MongoDB 固定为 admin
是,更多信息,请参见 认证数据库
authMechanism=MONGODB-CR
认证机制
是,更多信息,请参见 认证机制
authSource=admin
身份认证所用库,云数据库 MongoDB 固定为 admin
是,更多信息,请参见 认证数据库
readPreference=secondaryPreferred
可以设置优先读从库
是,更多信息,请参见 读操作的主从优先级
replicaSet
副本集 ID

通过 Shell 方式连接数据库

介绍通过 mongo shell 方式连接数据库的操作方法。

前提条件

申请与云数据库 MongoDB 实例在同一地域同一个 VPC 内的 Linux 云服务器 CVM
创建云数据库 MongoDB 实例,且状态为运行中
已在数据库管理页面的账号管理页签获取访问数据库实例用户名与密码信息。具体操作,请参见 账号管理
已在实例列表获取访问数据库实例的内网 IP 地址与端口。具体操作,请参见 实例详情

操作步骤

步骤1:登录云服务器 CVM

2. 在左侧导航栏,选择实例
3. 在实例管理页面上方,选择地域。
4. 在实例列表中找到已申请的 CVM ,单击右侧操作列中的登录
5. 输入申请 CVM 时设置的用户名密码即可登录云服务器。

步骤2:下载并解压 MongoDB Shell

1. 进入安装 MongoDB Shell 的路径下,使用 mkdir 命令,创建单独的文件夹,方便管理。
2. 在已创建的文件夹路径下,使用 wget 命令下载 MongoDB Shell。示例如下:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-XX.XX.XX.tgz
说明:
您选择 MongoDB Shell 版本时,请注意选择与云数据库 MongoDB 服务并与 CVM 操作系统相匹配的版本。具体下载信息,请参见 下载地址
3. 使用 tar 命令解压已下载的 MongoDB Shell 的安装包。示例如下:
tar zxvf mongodb-linux-x86_64-rhel70-XX.XX.XX.tgz

步骤3:连接 MongoDB

1. 使用 cd 命令进入 MongoDB Shell 已解压的路径。示例如下:
cd mongodb-linux-x86_64-rhel70-XX.XX.XX
2. 执行如下命令,进入 MongoDB 。
./bin/mongo -umongouser -plxh***** 172.xx.xx.xx:27017/admin
其中,-u 后面指示连接数据库的用户名,-p 后面指示用户名的密码, 172.xx.xx.xx 和 27017 分别指定 MongoDB 实例主节点或从节点的 IP 地址 和端口,请您根据实际配置信息替换。
如忘记用户名与密码,请参见 账号管理 查看修改账号密码信息。
您可在节点管理 获取访问数据库实例主节点或从节点的 IP 地址与端口。
如果为多个 IP 访问,可将多个 IP 分别配置,使用英文逗号分隔开即可,例如:--host 172.XX.XX.XX:27017,172.XX.XX.XX:27017,172.30.XX.XX:27017
连接成功提示信息如下所示。更多连接示例,请参见 Shell 连接示例
MongoDB shell version v4.2.16
connecting to: mongodb://172.x.x.X:27017/admin?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("aeb18f32-6413-49da-864a-5123b4d2****") }
MongoDB server version: 4.2.11
Welcome to the MongoDB shell.
说明:
副本集,您可以连接 Primary 节点、Secondary1 节点或 Secondary2 节点的连接地址。
Primary 节点:副本集实例中的主节点,连接该节点可执行数据库的读写操作。
Secondary 节点:副本集实例中的从节点,连接该节点仅能执行数据库的读操作。
分片集群, 您可以连接任意一 mongos 节点的连接地址。

通过 URI 方式连接数据库

介绍多语言 SDK 客户端通过 URI 方式连接云数据库 MongoDB 的具体方法。

前提条件

准备多语言 SDK 运行环境 。
获取 URI 连接串:登录 MongoDB 控制台 ,在实例列表找到目标实例,在其实例详情页面的网络配置区域的访问地址中复制即可


连接示例

连接云数据库 MongoDB 最低驱动版本需要 3.2 版本,建议使用最新版的客户端驱动以保证最好的兼容性,包括 Shell 套件、Java jar 包、PHP 扩展、Node.js 模块等,具体请参见 MongoDB 官网驱动介绍。以下给出了云数据库 MongoDB 所支持的多语言 SDK 的具体示例,您可以根据示例拼接 URI,尝试连接数据库,并使用数据库进行读写操作。

更多参考

默认用户

云数据库 MongoDB 內建了 默认用户 mongouser,3.2版本的实例支持另外一个内建用户 rwuser。您可以在 MongoDB 控制台数据库管理页面查看系统账号,管理权限以满足业务需求。
rwuser 是唯一使用 MONGODB-CR 认证的用户,URI 示例如下:
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 以及在 MongoDB 控制台 创建的用户均是使用 SCRAM-SHA-1 认证的用户,URI 示例如下:
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,因此用户登录时需要指定认证库为 admin。用命令行创建的用户,例如在 test 库下建立的用户登录时指定的认证库为 test。
综上,您必须选择一种方式将 admin 作为认证库代入 URI 中。

认证机制

云数据库 MongoDB 支持 MONGODB-CR 和 SCRAM-SHA-1 两种认证方式,并且内建了两个默认用户 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

无法连接

如果连接失败,请参见 无法连接 MongoDB 解决方法 逐一排查处理。更多问题,请参见 连接相关问题