tencent cloud

文档反馈

连接 MongoDB 实例

最后更新时间:2022-06-29 11:46:34

    实例创建成功之后,您可以通过 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
    

    URI 各个组成部分含义解释如下表所示。更多内容,请参见 MongoDB 官网文档

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

    通过 Shell 方式连接数据库

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

    前提条件

    操作步骤

    步骤1:登录云服务器 CVM

    1. 登录 云服务器控制台
    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
    连接成功提示信息如下所示。

    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 的具体方法。

    前提条件

    连接示例

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

    以下给出了云数据库 MongoDB 所支持的多语言 SDK 的具体示例,您可以根据示例拼接 URI,尝试连接数据库,并使用数据库进行读写操作。

    副本集4.0版本通过 URI 方式连接数据库

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

    操作步骤

    1. 登录 MongoDB 控制台
    2. 在左侧导航栏选择 NoSQL数据库 > MongoDB > 副本集实例
    3. 在页面左上方选择实例所属的地域。
    4. 在实例列表中,单击版本为4.0的实例 ID,进入实例详情页面。
    5. 基本信息区域,单击内网IPV4地址右侧的复制连接串,获取实例的 URI。格式如下:
      mongodb://mongouser:******@192.168.xx.xx:27017,192.168.x.xx:27017,192.168.x.xx:27017/admin?authSource=admin&replicaSet=cmgo-******
      


    3. 通过 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 作为认证库代入 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
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持