Docs 菜单
Docs 主页
/
MongoDB Shell

连接到部署

在此页面上

  • 先决条件
  • 支持的 MongoDB 版本
  • 安装 mongosh
  • 连接到 MongoDB Atlas 部署
  • 获取您的 Atlas 连接字符串
  • 设置数据库档案
  • 通过 mongosh 连接到 MongoDB Atlas mongosh
  • 通过默认端口连接到本地部署
  • 连接到非默认端口上的本地部署
  • 连接到远程主机上的部署
  • 指定连接选项
  • 使用身份验证进行连接
  • 使用 OpenID Connect 进行连接
  • 与 LDAP 连接
  • 连接到副本集
  • 使用 TLS 连接
  • 连接到特定数据库
  • 连接到其他部署
  • 验证当前连接
  • 断开与部署的连接
  • 非正版部署
  • 限制

本页介绍如何使用 MongoDB Shell 连接到 MongoDB 部署。您可以使用 MongoDB Shell 连接到 MongoDB Atlas 云托管部署、本地部署或连接到另一个远程主机。

要使用 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 进行对等互连或私有端点连接的信息,请参阅Atlas Connect via mongosh文档。

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

mongosh

这相当于以下命令:

mongosh "mongodb://localhost:27017"

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

例如,以下命令会连接到在本地主机端口 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 集群,则可以从 Atlas 用户界面复制连接字符串。要了解更多信息,请参阅 Atlas 文档中的连接到集群

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

要连接到需要身份验证的 MongoDB 部署,请使用--username--authenticationDatabase选项。mongosh会提示您输入密码,该密码会在您键入时隐藏。

例如,要以用户 alice 的身份在 admin 数据库上进行身份验证,请运行以下命令:

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 身份验证时,建议将连接字符串选项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 种子列表连接格式+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 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

← 安装 mongosh