访问连接
最近更新时间: 2024-10-17 17:10:00
实例初始化后,可以通过 MongoDB shell 或者各语言驱动访问数据库,并进行各种管理操作。 使用 云服务器 CVM 连接自动分配给云数据库的内网地址,这种连接方式使用内网高速网络,延迟低。云服务器和数据库须是同一账号,且同一个 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