连接到部署
在此页面上
本页介绍如何使用 MongoDB Shell 连接到 MongoDB 部署。您可以使用 MongoDB Shell 连接到 MongoDB Atlas 云托管部署、本地部署或连接到另一个远程主机。
先决条件
要使用 MongoDB Shell,您必须有一个可供连接的 MongoDB 部署。
对于免费的云托管部署,您可以使用MongoDB Atlas。
要了解如何运行本地 MongoDB 部署,请参阅安装 MongoDB。
支持的 MongoDB 版本
您可以使用 MongoDB Shell 连接 MongoDB 4.2 或更高版本。
安装 mongosh
这些程序假设您已安装mongosh
。有关安装mongosh
的详细信息,请参阅安装mongosh
。
连接到 MongoDB Atlas 部署
您可以直接从 shell 连接到 MongoDB Atlas 部署。
获取您的 Atlas 连接字符串
您需要一个 Atlas 连接字符串才能在 MongoDB Shell 上进行连接。您可以在 Atlas UI 中获取 Atlas 连接字符串。
有关详细信息,请参阅“查找 MongoDB Atlas 连接字符串”指南。
设置数据库档案
如果尚未创建数据库用户,则必须设置用户名和密码。要连接 Atlas,请将用户名与连接字符串一起传递。连接到 Atlas 的连接字符串。发出连接命令后,Shell 会提示输入密码。
注意
了解详情
您可以使用其他连接安全选项通过mongosh
连接到 Atlas。有关使用私有 IP 进行对等互连或私有端点连接的信息,请参阅Atlas Connect via mongosh文档。
通过默认端口连接到本地部署
要使用默认端口 27017 连接到在本地主机上运行的 MongoDB 部署,请运行不带任何选项的mongosh
:
mongosh
这相当于以下命令:
mongosh "mongodb://localhost:27017"
连接到非默认端口上的本地部署
要指定在本地主机上连接到的端口,可以使用以下任一方法:
具有所选端口的连接字符串
--port
命令行选项
例如,以下命令会连接到在本地主机端口 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 进行连接
要使用OpenID Connect连接到部署,请使用--authenticationMechanism
选项并将其设置为MONGODB-OIDC
。 mongosh
会将您重定向到浏览器,您可以在其中输入身份提供程序的登录信息。
例如,以下命令使用 MONGODB-OIDC
连接到本地部署:
mongosh "mongodb://localhost/" --authenticationMechanism MONGODB-OIDC
与 LDAP 连接
将
--username
设置为遵循security.ldap.authz.queryTemplate
的用户名或任何已配置的security.ldap.userToDNMapping
模板。将
--password
设置为相应的密码。 如果您没有为--password
命令行选项指定密码,mongosh
会提示您输入密码。将
--authenticationDatabase
设置为$external
。$external
参数必须放在单引号中,而不是双引号中,以防止 Shell 将$external
解释为变量。将
--authenticationMechanism
设置为PLAIN
。
警告
当您使用一次性密码进行 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
连接到副本集
要连接到副本集,可以执行以下任一操作:
在连接字符串中显式指定副本集的名称和其中节点。
选项 1:DNS 种子列表格式
要使用 DNS 种子列表连接格式,请在连接字符串中包含 +srv
修饰符。
例如,要连接到 server.example.com
上的副本集,请运行以下命令:
mongosh "mongodb+srv://server.example.com/"
注意
+srv TLS 行为
使用 +srv
连接字符串修饰符时,MongoDB 会自动将--tls
连接选项设置为 true
。要覆盖此行为,请将 --tls
设置为 false
。
方案 2:在连接字符串中指定节点
您可以在连接字符串中指定单个副本集成员。
例如,要连接到名为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 连接
要使用 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
,请执行以下操作之一:
键入
.exit
、exit
或exit()
。输入
quit
或quit()
。按
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 开始:对于连接字符串中的布尔值,您可以:
必须使用
true
或false
。不能使用
1
、y
、yes
或t
代替true
。不能使用
-1
、0
、n
、no
或f
代替false
。