连接到部署
本页内容
此页面展示了如何使用MongoDB Shell连接到 MongoDB 部署。您可以连接到MongoDB Atlas 云托管部署,连接到本地部署,或使用MongoDB Shell.
先决条件
使用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会提示您输入密码。
连接到默认端口上的本地部署
要连接到运行在本地主机 localhost 且默认端口为 27017 的 MongoDB 部署,请不带任何选项运行 mongosh
mongosh
这相当于以下命令
mongosh "mongodb://localhost:27017"
连接到非默认端口上的本地部署
要指定在本地主机上连接的端口,您可以使用以下任一种方法
带有所选端口的 连接字符串
--port
命令行选项
例如,以下命令连接到运行在 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 部署,请使用 --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进行连接
要使用LDAP连接到部署,请:
将
--username
设置为符合security.ldap.authz.queryTemplate
的或任何配置的security.ldap.userToDNMapping
模板的用户名。将
--password
设置为相应的密码。如果不指定--password
命令行选项,mongosh
会提示您输入密码。将
--authenticationDatabase
设置为$external
。必须将$external
参数放在单引号中,而不是双引号中,以防止shell将$external
解释为变量。将
--authenticationMechanism
设置为PLAIN
。
注意
当您使用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
连接到副本集
要连接到副本集,您可以:
在连接字符串中明确指定副本集名称和成员。
选项 1:DNS Seedlist 格式
要使用DNS种子列表连接格式,请在连接字符串中包含 +srv
修饰符。
例如,要连接到 server.example.com
上的副本集,请运行以下命令:
mongosh "mongodb+srv://server.example.com/"
选项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 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,例如数据库集群。 | 以下示例将
| |
HTTP_PROXY | 代理连接到 如果您还设置了 | 以下示例将
| |
HTTPS_PROXY | 代理连接到 如果您还设置了 | 以下示例将
| |
ALL_PROXY | 代理所有指定URL的连接。 | 以下示例将
| |
NO_PROXY | 以逗号分隔的应排除代理的主机名列表。 | 以下示例将环境变量
|
注意
mongosh
支持以下代理类型:
Socks5 代理
HTTP 代理
CONNECT 代理
解析为之前列出之一代理的 PAC URL
连接到不同的部署
如果您已经连接到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
。