Docs 菜单
Docs 主页
/
数据库手册
/ /

连接字符串格式

您可以使用下列格式中的一种来指定 MongoDB 连接字符串:

除非连接到在线存档,否则MongoDB Atlas集群使用 SRV 连接格式。

如要直接连接到连接字符串中指定的主机和端口,请将 directConnection 选项设置为 true。有关 directConnection 和其他连接字符串选项的详细信息,请参阅连接字符串选项。

MongoDB 支持 DNS 构建的种子列表。通过使用 DNS 构建可用服务器列表,可以提高部署的灵活性,并能够轮流更改服务器,而无需重新配置客户端。

SRV URI 连接模式具有以下形式:

mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]

有关更多示例,请参阅以下页面:

连接字符串包括以下组件:

组件
说明

mongodb:// or mongodb+srv://

标识标准连接格式 (mongodb://) 或 SRV 连接格式 (mongodb+srv://) 字符串的必需前缀。 要学习;了解有关每种格式的更多信息,请参阅标准连接字符串格式和 SRV 连接格式。

username:password@

可选。身份验证凭证。

如果指定,客户端将尝试向authSource验证用户身份。 如果未指定authSource ,客户端将尝试向defaultauthdb验证用户身份。 如果未指定defaultauthdb ,则写入admin数据库。

如果用户名或密码包含以下字符,则必须使用百分号编码对这些字符进行转换。

$ : / ? # [ ] @

另请参阅 authSource

host[:port]

运行 mongod 实例(或分片集群的 mongos 实例)的主机(和可选的端口号)。可以指定主机名、IP 地址或 UNIX 域套接字。根据您的部署拓扑,指定尽可能多的主机:

  • 对于独立实例,请指定独立 mongod 实例的主机名。

  • 对于副本集,副本集配置中列出的 mongod 实例的主机名。

  • 对于分片集群,请指定 mongos 实例的主机名。

如果未指定端口号,则使用默认端口 27017

如果使用 SRV URI 连接格式,则只能指定一个托管,不能指定端口。否则,驱动程序或 mongosh 会引发解析错误,并且不执行 DNS 解析。

/defaultauthdb

可选。 如果连接string包含 username:password@身份验证凭证但未指定authSource选项,则要使用的身份验证数据库。

如果 authSourcedefaultauthdb 均未指定,客户端将尝试在 admin数据库中验证指定用户的身份。有关更多信息,请参阅 authSource

重要提示:对于使用SRV 连接格式的Atlas部署,TXT DNS记录中的 authSource 会自动设立为 admin。有关连接到Atlas部署的更多信息,请参阅连接到Atlas集群。

?<options>

可选。 将连接特定选项指定为 <name>=<value> 对的查询string 。 有关这些选项的完整说明,请参阅连接string选项

如果连接字符串未指定数据库/,则必须在最后一个 host 和选项字符串开头的问号 (?) 之间指定斜杠 (/)。

要使用 DNS种子列表,请使用与带有 mongodb+srv前缀的标准连接字符串相同的语法,而不是标准mongodb+srv 向客户端指示后面的主机名对应于 DNS SRV记录。驾驶员或 mongosh 查询 DNS 的记录,以确定哪些主机正在运行mongodmongos 实例。

注意

使用 +srv连接字符串修饰符时,连接会自动将tls(或等效的ssl)选项设置为 true。要覆盖此行为,请在连接查询字符串中将 tls(或等效的 ssl)选项显式设立为 false

使用 +srv 格式时,必须以 <hostname>.<domain>.<TLD>. 格式指定 hostnamedomaintop-level domain (TLD)。这个表格显示占位符与示例值的对应关系:

占位符
例子

<hostname>

server

<domain>

example

<TLD>

com

<hostname>.<domain>.<TLD>

server.example.com

此示例显示了正确使用 <hostname>.<domain>.<TLD> 格式的 DNS 种子列表连接字符串。它使用密码D1fficultP%40ssw0rd作为用户myDatabaseUser进行身份验证:

mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@server.example.com/

相应的 DNS 配置类似于:

Record TTL Class Priority Weight Port Target
_mongodb._tcp.server.example.com. 86400 IN SRV 0 5 27317 mongodb1.example.com.
_mongodb._tcp.server.example.com. 86400 IN SRV 0 5 27017 mongodb2.example.com.

各个 SRV 记录必须采用 _mongodb._tcp.<hostname>.<domain>.<TLD> 格式。

当客户端连接到种子列表的节点时,客户端会检索它可以连接到的副本集列表。客户端经常在其种子列表中使用 DNS 别名,这意味着托管可能会返回与原始种子列表不同的服务器列表。如果发生这种情况,客户端将使用副本集提供的主机名,而不是种子列表中列出的主机名,以确保可以通过生成的副本集副本集节点。

重要

SRV 记录中返回的主机名必须与给定主机名股票相同的父域(在本示例中为 example.com)。如果父域和主机名不匹配,则无法连接。

与标准连接字符串一样,DNS 种子列表连接字符串支持将选项指定为查询字符串。使用 DNS 种子列表连接字符串,还可以通过 TXT 记录指定以下选项:

  • replicaSet

  • authSource

每个mongod实例只能指定一个 TXT记录。如果 DNS 中出现多条 TXT 记录,或者 TXT记录包含 replicaSetauthSource 以外的选项,客户端将返回错误。

server.example.com DNS 条目的 TXT记录类似于以下示例:

Record TTL Class Text
server.example.com. 86400 IN TXT "replicaSet=mySet&authSource=authDB"

将DNS SRV 记录和 TXT 记录中指定的选项结合起来,可解析为以下标准格式的连接字符串:

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

要覆盖 TXT记录中指定的选项,请在查询字符串中指定该选项。 示例,以下查询字符串会覆盖上一个 DNS 条目的 TXT记录中配置的 authSource 选项。

mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB

给定 authSource 的覆盖项,标准格式的等效连接字符串将类似于以下示例:

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB

注意

如果没有可用的 DNS 记录与连接string中标识的主机名相对应,则 mongodb+srv 选项将失败。 如果使用 +srv 连接string修饰符,则连接的tls (或等效的ssl )选项将设立为 true。 您可以通过在查询tls sslfalsetls=falsessl=false中使用 (或 )将 (或等效的 )选项显式设置为string 来覆盖此行为。

有关使用 DNS 种子列表连接格式将 mongosh 连接到副本集的示例,请参阅 mongosh 连接选项

本节介绍了用于连接到自托管 MongoDB 独立部署、副本集或分片集群的 MongoDB 连接 URI 的标准格式。

标准 URI 连接方案的形式如下:

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

您可以在连接字符串的 [/defaultauthdb]字段中指定默认数据库。 客户端使用指定的 [/defaultauthdb]数据库作为默认数据库。如果连接字符串未指定, MongoDB将使用 test数据库作为默认数据库。

您可以使用 authSource 连接选项在连接字符串中指定身份验证数据库。如果指定,客户端将使用此数据库来验证用户身份和凭证。如果未指定authSource,则默认为[/defaultauthdb]数据库。如果 authSource[/defaultauthdb] 均未指定,则 authSource 默认为 admin数据库。

以下示例连接字符串将默认数据库设置为 myDefaultDB,并将身份验证数据库设置为 admin

mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/myDefaultDB?authSource=admin

连接字符串包括以下组件:

组件
说明

mongodb:// or mongodb+srv://

标识标准连接格式 (mongodb://) 或 SRV 连接格式 (mongodb+srv://) 字符串的必需前缀。 要学习;了解有关每种格式的更多信息,请参阅标准连接字符串格式和 SRV 连接格式。

username:password@

可选。身份验证凭证。

如果指定,客户端将尝试向authSource验证用户身份。 如果未指定authSource ,客户端将尝试向defaultauthdb验证用户身份。 如果未指定defaultauthdb ,则写入admin数据库。

如果用户名或密码包含以下字符,则必须使用百分号编码:对这些字符进行转换:

$ : / ? # [ ] @

另请参阅 authSource

host[:port]

运行 mongod 实例(或分片集群的 mongos 实例)的主机(和可选的端口号)。可以指定主机名、IP 地址或 UNIX 域套接字。根据您的部署拓扑,指定尽可能多的主机:

  • 对于独立实例,请指定独立 mongod 实例的主机名。

  • 对于副本集,副本集配置中列出的 mongod 实例的主机名。

  • 对于分片集群,请指定 mongos 实例的主机名。

如果未指定端口号,则使用默认端口 27017

如果使用 SRV URI 连接格式,则只能指定一个托管,不能指定端口。否则,驱动程序或 mongosh 会引发解析错误,并且不执行 DNS 解析。

/defaultauthdb

可选。 如果连接string包含 username:password@身份验证凭证但未指定authSource选项,则要使用的身份验证数据库。

如果 authSourcedefaultauthdb 均未指定,客户端将尝试在 admin数据库中验证指定用户的身份。有关更多信息,请参阅 authSource

重要提示:对于使用SRV 连接格式的Atlas部署,TXT DNS记录中的 authSource 会自动设立为 admin。有关连接到Atlas部署的更多信息,请参阅连接到Atlas集群。

?<options>

可选。 将连接特定选项指定为 <name>=<value> 对的查询string 。 有关这些选项的完整说明,请参阅连接string选项

如果连接字符串未指定数据库/,则必须在最后一个 host 和选项字符串开头的问号 (?) 之间指定斜杠 (/)。

后退

选项

在此页面上