文档菜单
文档首页
/
MongoDB Shell

连接到部署

本页内容

  • 先决条件
  • 支持的 MongoDB 版本
  • 安装mongosh
  • 连接到 MongoDB Atlas 部署
  • 获取您的 Atlas 连接字符串
  • 设置您的数据库凭据
  • 使用 mongosh 连接到 MongoDB Atlas
  • 在默认端口上连接到本地部署
  • 在非默认端口上连接到本地部署
  • 连接到远程主机上的部署
  • 指定连接选项
  • 通过身份验证连接
  • 使用 OpenID Connect 连接
  • 使用 LDAP 连接
  • 连接到副本集
  • 使用 TLS 连接
  • 连接到特定数据库
  • 代理设置
  • 连接到不同的部署
  • 验证当前连接
  • 从部署断开连接
  • 非真实部署
  • 限制

此页面展示了如何使用MongoDB Shell连接到 MongoDB 部署。您可以连接到MongoDB Atlas 云托管部署,连接到本地部署,或使用MongoDB Shell.

使用MongoDB Shell,您必须有一个要连接的 MongoDB 部署。

  • 对于免费的云托管部署,您可以使用 MongoDB Atlas。

  • 要了解如何运行本地 MongoDB 部署,请参阅 安装 MongoDB。

您可以使用MongoDB Shell连接到 MongoDB 4.2 或更高版本。

这些步骤假设您已经安装了 mongosh。有关安装 mongosh 的更多信息,请参阅安装 mongosh

您可以直接从您的 shell 连接到 MongoDB Atlas 部署。

1

您需要 Atlas 连接字符串才能从MongoDB Shell连接。您可以在 Atlas UI 中获取 Atlas 连接字符串。

有关详细信息,请参阅查找您的 MongoDB Atlas 连接字符串指南。

2

如果您还没有创建数据库用户(请点击此处),您必须设置用户名和密码。要连接到Atlas,请使用Atlas连接字符串传递您的用户名。在发出连接命令后,shell会提示您输入密码。

3

要建立连接,请使用您的连接字符串和选项运行 mongosh 命令。

连接字符串包括以下元素:

  • 您的集群名称

  • 一个哈希

  • API版本标志

  • 您要连接时使用的用户名标志

类似以下字符串:

mongosh "mongodb+srv://YOUR_CLUSTER_NAME.YOUR_HASH.mongodb.net/" --apiVersion YOUR_API_VERSION --username YOUR_USERNAME

注意

了解更多信息

您可以使用其他连接安全选项通过 mongosh 连接到Atlas。有关使用私有IP进行对等连接或私有端点连接的信息,请参阅通过 mongosh 连接到 Atlas 文档。

要连接到运行在本地主机 localhost 且默认端口为 27017 的 MongoDB 部署,请不带任何选项运行 mongosh

mongosh

这相当于以下命令

mongosh "mongodb://localhost:27017"

要指定在本地主机上连接的端口,您可以使用以下任一种方法

例如,以下命令连接到运行在 localhost 端口 28015 上的部署

mongosh "mongodb://localhost:28015"
mongosh --port 28015

要指定远程主机和端口,您可以使用以下任一种方法

  • 带有所选主机和端口的 连接字符串

  • 命令行选项 --host--port。如果您省略了 --port 选项,mongosh 将使用默认端口 27017。

例如,以下命令连接到运行在主机 mongodb0.example.com 和端口 28015 上的 MongoDB 部署。

mongosh "mongodb://mongodb0.example.com:28015"
mongosh --host mongodb0.example.com --port 28015

注意

连接到 MongoDB Atlas

如果您的远程主机是Atlas集群,您可以从AtlasUI 复制您的连接字符串。有关更多信息,请参阅 Atlas 文档中的 连接到集群

指定不同的连接选项以连接到不同类型的部署。

要连接到需要认证的 MongoDB 部署,请使用 --username--authenticationDatabase 选项。在输入密码时,mongosh 会将其隐藏。

例如,要作为用户 aliceadmin 数据库上进行认证,请运行以下命令

mongosh "mongodb://mongodb0.example.com:28015" --username alice --authenticationDatabase admin

要将密码作为连接命令的一部分提供,而不是使用提示,请使用 --password 选项。对于 mongosh 的程序化使用,例如 驱动程序,请使用此选项。

提示

另请参阅

要使用OpenID Connect连接到部署,请使用--authenticationMechanism选项并将其设置为MONGODB-OIDCmongosh会将您重定向到浏览器,您可以在那里输入身份提供者的登录信息。

例如,以下示例使用MONGODB-OIDC连接到本地部署:

mongosh "mongodb://localhost/" --authenticationMechanism MONGODB-OIDC

要使用LDAP连接到部署,请:

注意

当您使用LDAP身份验证的一次性密码时,建议将连接字符串选项 connection string options maxPoolSize=1&srvMaxHosts=1 添加到您的连接字符串中,以减少连接失败的可能性。

包括MongoDB部署的 --host--port,以及与您的部署相关的任何其他选项。

例如,以下操作是针对使用LDAP身份验证和授权运行的MongoDB部署进行身份验证的:

mongosh --username alice@dba.example.com --password --authenticationDatabase '$external' --authenticationMechanism "PLAIN" --host "mongodb.example.com" --port 27017

要连接到副本集,您可以:

要使用DNS种子列表连接格式,请在连接字符串中包含 +srv 修饰符。

例如,要连接到 server.example.com 上的副本集,请运行以下命令:

mongosh "mongodb+srv://server.example.com/"

注意

+srv TLS行为

当您使用 +srv 连接字符串修饰符时,MongoDB会自动将 --tls 连接选项设置为 true。要覆盖此行为,请将 --tls 设置为 false

您可以在连接字符串中指定单个副本集成员。

例如,要连接到名为replA的三个成员副本集,请运行以下命令

mongosh "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"

注意

自动添加directConnection参数

当您在连接字符串中指定单个副本集成员时,mongosh会自动添加directConnection=true参数,除非以下至少有一个条件为真

  • 连接字符串中存在replicaSet查询参数。

  • 连接字符串使用mongodb+srv://连接字符串格式。

  • 连接字符串包含具有多个主机的种子列表。

  • 连接字符串已包含directConnection参数。

directConnection=true时,所有操作都在连接URI中指定的主机上运行。

要使用TLS连接到部署,您可以

  • 使用DNS Seedlist连接格式。带有+srv连接字符串修饰符的连接字符串会自动将tls选项设置为true

    例如,要连接到已启用TLS的DNS种子列表定义的副本集,请运行以下命令

    mongosh "mongodb+srv://server.example.com/"
  • 在连接字符串中将--tls选项设置为true

    例如,要使用连接字符串选项启用tls,请运行以下命令

    mongosh "mongodb://mongodb0.example.com:28015/?tls=true"
  • 指定--tls命令行选项。

    例如,要连接到已启用TLS的远程主机,请运行以下命令

    mongosh "mongodb://mongodb0.example.com:28015" --tls

要连接到特定数据库,请在您的连接字符串URI路径中指定一个数据库。如果您在URI路径中未指定数据库,则连接到test数据库。

例如,要连接到本地主机上的名为qa的数据库,请运行以下命令

mongosh "mongodb://localhost:27017/qa"

要使用代理配置建立连接,可以使用以下环境变量

变量
描述
示例
MONGODB_PROXY
代理连接到mongodb://mongodb+srv:// URL,例如数据库集群。

以下示例将MONGODB_PROXY环境变量设置为通过位于example.com:8080的CONNECT代理代理所有MongoDB连接,并启用TLS。

export MONGODB_PROXY=https://example.com:8080
HTTP_PROXY

代理连接到http:// URL。HTTP连接主要用于OIDC身份验证。

如果您还设置了HTTPS_PROXY,则所有请求的值都优先于HTTPS_PROXY

以下示例将HTTP_PROXY环境变量设置为通过位于example.com:8080的CONNECT代理代理HTTP连接

export HTTP_PROXY=http://example.com:8080
HTTPS_PROXY

代理连接到https:// URL。HTTPS连接主要用于OIDC身份验证。

如果您还设置了HTTP_PROXY,则所有请求的值都优先于HTTPS_PROXY

以下示例将HTTPS_PROXY环境变量设置为通过位于localhost:8080的CONNECT代理代理所有HTTPS连接,不使用TLS

export HTTPS_PROXY=http://localhost:8080
ALL_PROXY
代理所有指定URL的连接。

以下示例将ALL_PROXY环境变量设置为通过位于example.com:1234的Socks5代理代理所有出站网络连接,并在URL中包含凭据

export ALL_PROXY=socks5://username:password@example.com:1234
NO_PROXY
以逗号分隔的应排除代理的主机名列表。

以下示例将环境变量 NO_PROXY 设置为绕过代理,以连接到 localhostinternal-db.example.com

export NO_PROXY=localhost,internal-db.example.com

注意

mongosh 支持以下代理类型:

  • Socks5 代理

  • HTTP 代理

  • CONNECT 代理

  • 解析为之前列出之一代理的 PAC URL

如果您已经连接到MongoDB Shell中的某个部署,您可以使用 Mongo()connect() 方法在内部连接到不同的部署:MongoDB Shell.

要了解如何使用这些方法连接到不同的部署,请参阅 打开新连接。

要验证您的当前数据库连接,请使用 db.getMongo() 方法。

此方法返回当前连接的 连接字符串 URI

要从部署中断连接并退出 mongosh,请执行以下操作之一

  • 输入 .exitexitexit()

  • 输入 quitquit()

  • Ctrl + D

  • Ctrl + C 两次。

当你连接到非真实 MongoDB 实例时,shell 会显示警告信息。由于缺少、不一致或不完整的功能,非真实实例的行为可能与官方 MongoDB 实例不同。

  • Kerberos 身份验证不允许在连接字符串中使用 authMechanismProperties=CANONICALIZE_HOST_NAME:true|false。相反,请使用以下之一

    • authMechanismProperties=CANONICALIZE_HOST_NAME:forward

    • authMechanismProperties=CANONICALIZE_HOST_NAME:forwardAndReverse

    • authMechanismProperties=CANONICALIZE_HOST_NAME:none

  • mongosh 目前仅支持 zlib 压缩器。以下压缩器不受支持

    • zstd

    • snappy

  • mongosh 2.0.0 版本开始

    连接字符串 中的布尔值,您必须使用

    • truefalse

    • 不能使用 1yyest 来代替 true

    • 不能使用 -10nnof 来代替 false

返回

验证 Windows 软件包