Docs 菜单
Docs 主页
/
MongoDB Manual
/

连接字符串(Connection Strings)

在此页面上

  • 兼容性
  • 查找您的 MongoDB Atlas 连接字符串
  • 在 MongoDB Atlas 用户界面中,转到项目的 Clusters页面。
  • 打开 Connection Method 对话框。
  • 选择连接方法。
  • 按照所选连接方法的说明进行操作。
  • 查找自托管部署的连接字符串
  • 连接字符串格式
  • SRV 连接格式。
  • 标准连接字符串格式

➤ 使用右上角的 Select your language(选择语言)下拉菜单,设置以下示例的语言。


您可以使用连接字符串来定义 MongoDB 实例与以下目标之间的连接:

  • 您的应用程序,当您使用驱动程序进行连接时。

  • MongoDB CompassMongoDB Shell (mongosh) 等工具。

您可以使用连接字符串连接到以下环境中托管的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

完成如下步骤,找到您的连接字符串。

要使用Atlas CLI查找 MongoDB Atlas 连接字符串,请从 Atlas CLI 进行安装连接,然后运行以下命令。将 <clusterName>替换为 MongoDB Atlas 集群的名称,并将<projectId>替换为项目 ID。

atlas clusters connectionStrings describe <clusterName> --projectId <projectId>

要了解更多信息,请参阅 atlas 集群资源 connectionStrings 描述

要在 Atlas 用户界面中查找 MongoDB Atlas 连接字符串,请按照以下步骤操作:

1
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects(项目)菜单中选择所需的项目。

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

    此时会显示“集群”页面。

2
  1. 单击要连接的集群的Connect

  2. 单击Choose a Connection Method 。 MongoDB Atlas 默认选择Standard Connection 。要使用私有端点进行连接,请选择Private Endpoint

3

要连接到您的应用程序,请单击 Drivers。要使用工具进行连接,请单击要用来访问数据的工具。

4
  1. 如果您选择了 Drivers,请选择您的驱动程序和版本。如果您选择了工具,请下载相应工具。

  2. 选择 Connect To Cluster

  3. 复制连接字符串。将连接字符串中的 <password><username> 替换为数据库用户的凭证。

您的 MongoDB Atlas 连接字符串将类似于以下示例:

mongosh "mongodb+srv://cluster0.example.mongodb.net myFirstDatabase" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority

如果您已连接到自托管的 MongoDB Enterprise 或 MongoDB Community 部署,请运行 db.getMongo() 方法以返回连接字符串。

如果您未连接到部署,则可以根据要使用的连接类型确定连接字符串。请参阅 SRV 连接格式以了解 SRV 连接字符串语法,或者参阅标准连接字符串格式以了解标准连接字符串语法。

您的自托管连接字符串将类似于以下示例:

以下副本集连接字符串包含这些元素:

mongosh "mongodb+srv://mongodb0.example.com/?authSource=admin&replicaSet=myRepl" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin&replicaSet=myRepl

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

以下分片集群连接字符串包含这些元素:

  • 连接字符串中的mongos主机

  • 它以用户 myDatabaseUser 和密码 D1fficultP%40ssw0rd 进行身份验证,以实施访问控制

mongosh "mongodb+srv://mongos0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com/?authSource=admin

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

以下独立运行的实例连接字符串以用户myDatabaseUser和密码D1fficultP%40ssw0rd进行身份验证,以实施访问控制:

mongosh "mongodb+srv://mongodb0.example.com/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com/?authSource=admin

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

以下副本集连接字符串包含这些元素:

mongosh "mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

以下分片集群连接字符串包含这些元素:

mongosh "mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

以下独立运行的实例连接字符串实施访问控制:

mongosh "mongodb://@mongodb0.example.com:27017/?authSource=admin" --apiVersion 1 --username myDatabaseUser
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin

注意

如果用户名或密码包含以下字符:

$ : / ? # [ ] @

这些字符必须使用百分比编码进行转换。

有关连接字符串选项的完整列表,请参阅SRV 连接格式标准连接字符串格式。有关更多示例,请参阅连接字符串示例。

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

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

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

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

如果authSourcedefaultauthdb均未指定,客户端将尝试在admin数据库中验证指定用户的身份。

?<options>

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

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

为了利用 DNS 种子列表,请使用与标准连接字符串相同的语法,前缀为 mongodb+srv,而不是标准 mongodb+srv 向客户端指示后面的主机名对应于 DNS SRV 记录。然后,驱动程序或 mongosh 将查询 DNS 以获取记录,以确定哪些主机正在运行 mongodmongos 实例。

注意

使用+srv 连接字符串修饰符会自动将连接的tls (或等效的ssl )选项设置为true 。您可以通过在查询字符串中使用tls sslfalsetls=false(或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)。如果父域和主机名不匹配,您将无法连接。

此示例显示了缺少 <hostname> 的 DNS 种子列表连接字符串。这是不正确的,会引发错误。

# This connection string is missing the <hostname> and raises a connection error
mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@example.com/

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

  • replicaSet

  • authSource

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

DNS 条目的 TXT 记录类似于:server.example.com

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

注意

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

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

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

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

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[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

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

如果authSourcedefaultauthdb均未指定,客户端将尝试在admin数据库中验证指定用户的身份。

?<options>

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

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

后退

区域设置和默认参数