Docs 菜单

Docs 主页开发应用程序MongoDB Manual

配置文件选项

在此页面上

  • 配置文件
  • 文件格式
  • 使用配置文件
  • 核心选项
  • systemLog 选项
  • processManagement 选项
  • net 选项
  • security 选项
  • setParameter 选项
  • storage 选项
  • operationProfiling 选项
  • replication 选项
  • sharding 选项
  • auditLog 选项
  • mongos 专用选项
  • Windows 服务选项
  • 删除 MMAPv1 选项

以下页面介绍了 MongoDB 7.0 中可用的配置选项。有关其他 MongoDB 版本的配置文件选项,请参阅相应版本的 MongoDB 手册。

注意

如果您使用 MongoDB Atlas 来管理云中的 MongoDB 部署,则无需创建配置文件。要了解如何为 MongoDB Atlas 部署配置设置,请参阅 配置其他设置。

除了使用配置文件选项之外,MongoDB 二进制文件的默认配置还使用操作系统环境变量。

您可以使用配置文件在启动时配置 mongodmongos 实例。配置文件包含等效于 mongodmongos 命令行选项的设置。请参阅配置文件设置和命令行选项映射

使用配置文件可以更轻松地管理 mongodmongos 选项,尤其是在大规模部署时。您还可以在配置文件中添加注释以解释服务器的设置。

  • 如果使用软件包管理器(例如 Linux 上的 yumapt,或 macOS 上的 brew安装 MongoDB,或者使用 Windows 上的 MSI 安装程序安装 MongoDB,则安装过程中会提供默认配置文件

    平台
    方法
    配置文件
    Linux
    aptyumzypper 包管理器
    /etc/mongod.conf
    macOS
    brew 包管理器:
    Windows
    MSI 安装程序
    <install directory>\bin\mongod.cfg
  • 如果通过下载的TGZZIP文件安装 MongoDB ,则必须创建自己的配置文件。可以从基本示例配置入手。

MongoDB 配置文件使用 YAML 格式 [1 ]

以下示例配置文件包含多个 mongod 设置,您可以根据本地配置进行调整:

注意

YAML 不支持缩进制表符:请改用空格。

systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
processManagement:
fork: true
net:
bindIp: 127.0.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
...

官方 MongoDB 包中包含的 Linux 包初始化脚本取决于systemLog.pathstorage.dbPathprocessManagement.fork的特定值。如果修改默认配置文件中的这些设置, mongod可能无法启动。

[1] YAML 是 JSON 的超集。

注意

MongoDB 支持在配置文件中使用扩展指令来加载外部来源的值。扩展指令可以加载特定配置文件选项的值加载整个配置文件。

以下扩展指令可用:

扩展指令
说明

允许用户指定 REST 端点作为配置文件选项完整配置文件的外部来源。

如果配置文件包含 __rest 扩展,则在 Linux/macOS 上,对配置文件的读取访问权限必须仅限于运行 mongod / mongos 进程的用户。

允许用户指定 shell 或终端作为配置文件选项完整配置文件的外部来源。

如果配置文件包含 __exec 扩展,则在 Linux/macOS 上,对配置文件的写入访问权限必须仅限于运行 mongod / mongos 进程的用户。

有关完整文档,请参阅源自外部的配置文件值

如要使用配置文件来配置 mongodmongos,请使用 --config 选项或 -f 选项指定配置文件,如以下示例所示:

例如,下面使用 mongod --config <configuration file> mongos --config <configuration file>

mongod --config /etc/mongod.conf
mongos --config /etc/mongos.conf

您也可以使用 -f 别名来指定配置文件,如下所示:

mongod -f /etc/mongod.conf
mongos -f /etc/mongos.conf

如果您从程序包安装并使用系统的初始化脚本启动了 MongoDB,那么您已经在使用配置文件了。

如果在配置文件中使用扩展指令,则在启动 mongodmongos 时必须包含 --configExpand 选项。例如:

mongod --config /etc/mongod.conf --configExpand "rest,exec"
mongos --config /etc/mongos.conf --configExpand "rest,exec"

如果配置文件包含扩展指令,而您在启动 mongod / mongos 时没有在 --configExpand 选项中指定该指令,则 mongod / mongos 将无法启动。

有关完整文档,请参阅源自外部的配置文件值

systemLog:
verbosity: <int>
quiet: <boolean>
traceAllExceptions: <boolean>
syslogFacility: <string>
path: <string>
logAppend: <boolean>
logRotate: <string>
destination: <string>
timeStampFormat: <string>
component:
accessControl:
verbosity: <int>
command:
verbosity: <int>
# COMMENT additional component verbosity settings omitted for brevity
systemLog.verbosity

类型:整型

默认值:0

组件的默认日志消息详细级别。详细级别决定 MongoDB 输出的信息和调试消息的数量。[2]

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

要对命名组件使用不同的详细级别,请使用该组件的详细级别设置。例如,使用systemLog.component.accessControl.verbosity专门为ACCESS组件设置详细级别。

有关特定组件的详细级别设置,请参阅 systemLog.component.<name>.verbosity 设置。

有关设置日志详细级别的各种方法,请参阅配置日志详细级别

[2] 从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录 D2。在以前版本中,MongoDB 日志消息仅为调试级别指定 D
systemLog.quiet

类型:布尔值

默认:false

在尝试限制输出量的安静模式下运行 mongosmongod

systemLog.quiet不 建议在生产系统中使用 ,因为它可能会使特定连接期间的跟踪问题变得更加困难。

systemLog.traceAllExceptions

类型:布尔值

默认:false

打印用于调试的详细信息。用于额外的日志记录以进行与支持相关的故障排除。

systemLog.syslogFacility

类型:字符串

默认:用户

将消息记录到系统日志时使用的设施级别。操作系统的 syslog 实施必须支持您指定的值。要使用此选项,必须将systemLog.destination设置为syslog

systemLog.path

类型:字符串

mongodmongos 应将所有诊断日志信息发送到的日志文件路径,而不是标准输出或主机的 syslog。MongoDB 会在指定路径创建日志文件。

Linux 包初始化脚本不希望systemLog.path更改为默认值。如果使用 Linux 包并更改systemLog.path ,则必须使用自己的初始化脚本并禁用内置脚本。

systemLog.logAppend

类型:布尔值

默认:false

true时, mongosmongod在实例重新启动时将新条目附加到现有日志文件的末尾。如果没有此选项, mongodmongos会备份现有日志并创建新文件。

systemLog.logRotate

类型:字符串

默认:重命名

确定轮换服务器日志和/或审核日志时 logRotate 命令的行为。指定 renamereopen

  • rename 对日志文件进行重命名。

  • reopen 按照典型的 Linux/Unix 日志轮换行为关闭并重新打开日志文件。使用 Linux/Unix logrotate 实用程序时使用 reopen 避免日志丢失。

    如果指定reopen ,则还必须将systemLog.logAppend设置为true

systemLog.destination

类型:字符串

MongoDB 发送所有日志输出的目标。指定filesyslog 。如果指定file ,则还必须指定systemLog.path

如果不指定systemLog.destination ,MongoDB 会将所有日志输出发送到标准输出。

警告

syslog 守护进程在记录消息时生成时间戳,而不是在 MongoDB 发出消息时生成时间戳。这可能会导致日志条目的时间戳产生误导,尤其是当系统负载较重时。我们建议对生产系统使用 file 选项,以确保时间戳的准确性。

systemLog.timeStampFormat

类型:字符串

默认:iso8601-local

日志消息中时间戳的时间格式。指定以下值之一:

说明
iso8601-utc
以 ISO-8601 格式显示协调通用时间 (UTC) 的时间戳。例如,对于纪元开始时的纽约: 1970-01-01T00:00:00.000Z
iso8601-local
以 ISO-8601 格式显示当地时间的时间戳。例如,对于纪元开始时的纽约: 1969-12-31T19:00:00.000-05:00

注意

systemLog.timeStampFormat不再支持ctimectime格式日期的示例为: Wed Dec 31 18:17:54.811

systemLog:
component:
accessControl:
verbosity: <int>
command:
verbosity: <int>
# COMMENT some component verbosity settings omitted for brevity
replication:
verbosity: <int>
election:
verbosity: <int>
heartbeats:
verbosity: <int>
initialSync:
verbosity: <int>
rollback:
verbosity: <int>
storage:
verbosity: <int>
journal:
verbosity: <int>
recovery:
verbosity: <int>
write:
verbosity: <int>

注意

从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录 D2。在以前版本中,MongoDB 日志消息仅为调试级别指定 D

systemLog.component.accessControl.verbosity

类型:整型

默认值:0

访问控制相关组件的日志信息详细级别。请参阅 ACCESS 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.command.verbosity

类型:整型

默认值:0

与命令相关的组件的日志消息详细级别。请参阅 COMMAND 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.control.verbosity

类型:整型

默认值:0

与控制操作相关的组件的日志消息详细级别。请参阅 CONTROL 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.ftdc.verbosity

类型:整型

默认值:0

与诊断数据集合操作相关的组件的日志消息详细级别。请参阅 FTDC 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.geo.verbosity

类型:整型

默认值:0

与地理空间分析操作相关的组件的日志消息详细级别。请参阅 GEO 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.index.verbosity

类型:整型

默认值:0

与索引操作相关的组件的日志消息详细级别。请参阅 INDEX 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.network.verbosity

类型:整型

默认值:0

与网络操作相关的组件的日志消息详细级别。请参阅 NETWORK 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.query.verbosity

类型:整型

默认值:0

与查询操作相关的组件的日志消息详细级别。请参阅 QUERY 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.replication.verbosity

类型:整型

默认值:0

复制相关组件的日志信息详细级别。请参阅 REPL 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.replication.election.verbosity

类型:整型

默认值:0

与选举相关组件的日志信息详细级别。请参阅 ELECTION 组件。

如果未设置systemLog.component.replication.election.verbosity ,则systemLog.component.replication.verbosity级别也适用于选举组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.replication.heartbeats.verbosity

类型:整型

默认值:0

与心跳相关组件的日志消息详细级别。请参阅 REPL_HB 组件。

如果未设置systemLog.component.replication.heartbeats.verbosity ,则systemLog.component.replication.verbosity级别也适用于心跳组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.replication.initialSync.verbosity

类型:整型

默认值:0

与 InitialSync 相关的组件的日志消息详细级别。请参阅 INITSYNC 组件。

如果未设置systemLog.component.replication.initialSync.verbosity ,则systemLog.component.replication.verbosity级别也适用于initialSync 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.replication.rollback.verbosity

类型:整型

默认值:0

与回滚相关的组件的日志消息详细程度。请参阅 ROLLBACK 组件。

如果未设置systemLog.component.replication.rollback.verbosity ,则systemLog.component.replication.verbosity级别也适用于回滚组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.sharding.verbosity

类型:整型

默认值:0

分片相关组件的日志信息详细级别。请参阅 SHARDING 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.verbosity

类型:整型

默认值:0

与存储相关的组件的日志消息详细级别。请参阅 STORAGE 组件。

如果未设置systemLog.component.storage.journal.verbosity ,则systemLog.component.storage.verbosity级别也适用于日志组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.journal.verbosity

类型:整型

默认值:0

与日志相关的组件的日志消息详细级别。请参阅 JOURNAL 组件。

如果未设置systemLog.component.storage.journal.verbosity ,则日志组件具有与父存储组件相同的详细级别:即systemLog.component.storage.verbosity级别(如果已设置)或默认详细级别。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.recovery.verbosity

类型:整型

默认值:0

4.0 版本中的新功能

与恢复相关的组件的日志消息详细级别。请参阅 RECOVERY 组件。

如果未设置systemLog.component.storage.recovery.verbosity ,则systemLog.component.storage.verbosity级别也适用于恢复组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎相关的组件的日志消息详细级别。请参阅 WT 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtBackup.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的备份操作相关的组件的日志消息详细级别。请参阅 WTBACKUP 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtCheckpoint.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的检查点操作相关的组件的日志消息详细级别。请参阅 WTCHKPT 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtCompact.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的压实操作相关的组件的日志消息详细级别。请参阅 WTCMPCT 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtEviction.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的逐出操作相关的组件的日志消息详细级别。请参阅 WTEVICT 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtHS.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的历史记录存储操作相关的组件的日志消息详细级别。请参阅 WTHS 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtRecovery.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的恢复操作相关的组件的日志消息详细级别。请参阅 WTRECOV 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtRTS.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的回滚到稳定 (RTS) 操作相关组件的日志消息详细级别。请参阅 WTRTS 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtSalvage.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的数据打捞 (salvage) 操作相关的组件的日志消息详细级别。请参阅 WTSLVG 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtTiered.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的分层存储操作相关的组件的日志消息详细级别。请参阅 WTTIER 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtTimestamp.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎使用的时间戳相关组件的日志消息详细级别。请参阅 WTTS 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtTransaction.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的事务操作相关组件的日志消息详细级别。请参阅 WTTXN 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtVerify.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的验证操作相关的组件的日志消息详细级别。请参阅 WTVRFY 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.storage.wt.wtWriteLog.verbosity

类型:整型

默认:-1

5.3 版本中的新增功能

WiredTiger 存储引擎执行的日志写入操作相关的组件的日志消息详细级别。请参阅 WTWRTLOG 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.transaction.verbosity

类型:整型

默认值:0

版本 4.0.2 中的新增功能

与事务相关组件的日志信息详细级别。请参阅 TXN 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

systemLog.component.write.verbosity

类型:整型

默认值:0

与写入操作相关的组件的日志消息详细级别。请参阅 WRITE 组件。

详细程度级别的范围可以从 05

  • 0 是 MongoDB 的默认日志详细程度级别,它包括信息性消息。

  • 15 提高详细程度级别以包括调试消息。

processManagement:
fork: <boolean>
pidFilePath: <string>
timeZoneInfo: <string>
processManagement.fork

类型:布尔值

默认:false

启用在后台运行mongosmongod进程的守护进程模式。默认情况下, mongosmongod不作为守护进程运行。要将mongosmongod作为守护进程使用,请设置processManagement.fork或使用可处理守护进程进程的控制进程(例如systemd )。

Windows 不支持processManagement.fork选项。

Linux 包初始化脚本不希望processManagement.fork更改为默认值。如果使用 Linux 包并更改processManagement.fork ,则必须使用自己的初始化脚本并禁用内置脚本。

processManagement.pidFilePath

类型:字符串

指定用于存储mongosmongod进程的进程 ID (PID) 的文件位置。运行mongodmongos进程的用户必须能够写入此路径。如果未指定processManagement.pidFilePath选项,则进程不会创建 PID 文件。此选项通常仅在与processManagement.fork设置结合使用时有用。

注意

Linux

在 Linux 上,PID 文件通常由发行版的初始化系统负责管理:通常是/etc/init.d目录中的服务文件,或者是使用systemctl注册的 systemd 单元文件。仅当您未使用这些初始化系统时才使用processManagement.pidFilePath选项。有关更多信息,请参阅适用于您的操作系统的相应安装指南

注意

macOS

在 macOS 上,PID 文件管理通常由brew处理。仅当您未在 macOS 系统上使用brew时才使用processManagement.pidFilePath选项。有关更多信息,请参阅适用于您的操作系统的相应安装指南。

processManagement.timeZoneInfo

类型:字符串

加载时区数据库的完整路径。如果未提供此选项,则 MongoDB 将使用其内置时区数据库。

Linux 和 macOS 软件包中包含的配置文件默认将时区数据库设置为 /usr/share/zoneinfo

内置时区数据库是 OLSON/IANA 时区数据库的副本。它随着 MongoDB 的发布而更新,但时区数据库的发布周期与 MongoDB 的发布周期不同。时区数据库的最新版本可在我们的下载网站上找到。

警告

MongoDB 使用第三方 时间库 库提供时区之间的准确转换。由于最近的更新,timelib 可能会在旧版本的 MongoDB 中创建不准确的时区转换。

在 之前的 MongoDB5 0版本中显式链接到时区数据库。 ,下载timeZoneInfo 时区数据库 。并使用 参数。

在版本 5.0 中进行了更改:MongoDB 删除了 net.serviceExecutor 配置选项和相应的 --serviceExecutor 命令行选项。

net:
port: <int>
bindIp: <string>
bindIpAll: <boolean>
maxIncomingConnections: <int>
wireObjectCheck: <boolean>
ipv6: <boolean>
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
tls:
certificateSelector: <string>
clusterCertificateSelector: <string>
mode: <string>
certificateKeyFile: <string>
certificateKeyFilePassword: <string>
clusterFile: <string>
clusterPassword: <string>
CAFile: <string>
clusterCAFile: <string>
clusterAuthX509:
attributes: <string>
extensionValue: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
logVersions: <string>
compression:
compressors: <string>
net.port

类型:整型

默认值

MongoDB 实例监听客户端连接的 TCP 端口。

在版本 7.0.3 中更改net.port 选项接受 065535 之间的值范围。将端口设置为 0 会将 mongosmongod 配置为使用操作系统分配的任意端口。

net.bindIp

类型:字符串

默认值:localhost

mongosmongod 应监听客户端连接的主机名和/或 IP 地址和/或完整 Unix 域套接字路径。可以将 mongosmongod 连接到任何接口。要绑定到多个地址,请输入逗号分隔值的列表。

例子

localhost,/tmp/mongod.sock

您可以指定 IPv4 和 IPv6 解决方案,或解析为 IPv4 或 IPv6 地址的主机名。

例子

localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513

注意

如果向 指定 IPv6 地址 或 可解析为 IPv 地址的主机名,则必须以6 net.bindIpmongosmongod net.ipv6 : true开头 才能启用 IPv6 支持。为 指定 IPv6 net.bindIp地址不会启用 IPv6 支持。

如果指定 链路本地 IPv6 地址 (fe80::/10 ),必须附加 区域索引 到该地址(即fe80::<address>%<adapter-name> )。

例子

localhost,fe80::a00:27ff:fee0:1fcf%enp0s3

重要

要避免因 IP 地址变更而更新配置,请使用 DNS 主机名而非 IP 地址。在配置副本集成员或分片集群成员时,使用 DNS 主机名而非 IP 地址尤为重要。

使用主机名而不是 IP 地址在分割网络范围内配置集群。从 MongoDB 5开始。 0 ,仅配置了 IP 地址的节点未通过启动验证,因此不会启动。

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅安全检查清单。至少应考虑强化网络基础设施启用身份验证

有关 IP 绑定的更多信息,请参阅 IP 绑定文档。

要绑定到所有 IPv4 地址,请输入 0.0.0.0

要绑定到所有 IPv4 和 IPv6 地址,请输入::,0.0.0.0 或星号"*" (将星号括在引号中以区别于 YAML 别名节点 )。或者,使用net.bindIpAll 设置。

注意

要为水平分割 DNS 配置集群节点,使用主机名称,而非 IP 地址。

从 MongoDB v5.0 开始,replSetInitiatereplSetReconfig 拒绝使用 IP 地址而不是主机名的配置。

使用 disableSplitHorizonIPCheck 修改无法更新为使用主机名的节点。该参数仅适用于配置命令。

mongodmongos在启动时不依赖disableSplitHorizonIPCheck进行验证。使用 IP 地址而不是主机名的旧版mongodmongos实例可以在升级后启动。

配置 IP 地址的实例会记录警告,要求使用主机名称而非 IP 地址。

net.bindIpAll

类型:布尔值

默认:false

如果为 true,则mongosmongod实例将绑定到所有 IPv 4地址(即0.0.0.0 )。如果mongosmongodnet.ipv6 : true } 开头,则net.bindIpAll也会绑定到所有 IPv 6地址(即:: )。

如果使用net.ipv6 : true 启动,则mongosmongod 仅支持6net.bindIpAll IPv 。单独指定 并不能启用 IPv6 支持。

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅安全检查清单。至少应考虑强化网络基础设施启用身份验证

有关 IP 绑定的更多信息,请参阅 IP 绑定文档。

或者,将net.bindIp 设置为::,0.0.0.0 或星号"*" (将星号括在引号中以区别于 YAML 别名节点 )绑定到所有 IP 地址。

注意

net.bindIpnet.bindIpAll是互斥的。同时指定两个选项会导致mongosmongod引发错误并终止。

net.maxIncomingConnections

类型:整型

默认(Windows):1,000,000
默认 (Linux):( RLIMIT_NOFILE ) *0 。8

mongosmongod接受的最大并行连接数。如果此设置高于操作系统配置的最大连接跟踪阈值,则此设置无效。

请勿为此选项指定过低的值,否则在正常的应用程序操作期间可能会遇到错误。

如果您的客户端创建了多个连接,并且允许这些连接超时而不是将其关闭,那么这对于 mongos 特别有用。

在这种情况下,请将maxIncomingConnections设置为略高于客户端创建的最大连接数或连接池的最大大小的值。

此设置可防止 mongos 在单独分片上造成连接峰值。此类峰值可能会扰乱分片集群的操作和内存分配。

net.wireObjectCheck

类型:布尔值

默认值:true

当为 true 时,mongodmongos 实例会在收到客户端请求时验证所有请求,防止客户端将格式不正确或无效的 BSON 插入 MongoDB 数据库。

对于子文档嵌套程度较高的对象, net.wireObjectCheck对性能的影响很小。

net.ipv6

类型:布尔值

默认:false

net.ipv6设置为true以启用 IPv 6支持。默认情况下, mongos / mongod禁用 IPv 6支持。

设置net.ipv6不会指示mongos / mongod侦听任何本地 IPv 6地址或接口。要将mongos / mongod配置为侦听 IPv 6接口,您必须:

  • 使用一个或多个可解析为 IPv 6地址的 IPv 6地址或主机名配置net.bindIp或者

  • net.bindIpAll设置为true

net:
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
net.unixDomainSocket.enabled

类型:布尔值

默认值:true

启用或禁用 UNIX 域套接字上的侦听。 net.unixDomainSocket.enabled仅适用于基于 Unix 的系统。

net.unixDomainSocket.enabledtrue时, mongosmongod侦听 UNIX 套接字。

mongosmongod 进程始终侦听 UNIX 套接字,除非满足以下条件之一:

mongosmongod 通过官方 .deb.rpm 包安装)默认将 bind_ip 配置设置为 127.0.0.1

net.unixDomainSocket.pathPrefix

类型:字符串

默认:/tmp

UNIX 套接字的路径。 net.unixDomainSocket.pathPrefix仅适用于基于 Unix 的系统。

如果此选项没有值,则 mongosmongod 进程会创建一个以 /tmp 为前缀的套接字。MongoDB 创建并侦听 UNIX 套接字,除非满足以下条件之一:

net.unixDomainSocket.filePermissions

类型:int

默认值0700

设置 UNIX 域套接字文件的权限。

net.unixDomainSocket.filePermissions 仅适用于基于 Unix 的系统。

在 3.6 版本中进行了更改:MongoDB 3.6 删除了已弃用的 net.http 选项。自 3.2 版以来,这些选项已弃用。

注意

tls选项提供与之前的ssl选项相同的功能。

net:
tls:
mode: <string>
certificateKeyFile: <string>
certificateKeyFilePassword: <string>
certificateSelector: <string>
clusterCertificateSelector: <string>
clusterFile: <string>
clusterPassword: <string>
clusterAuthX509:
attributes: <string>
extensionValue: <string>
CAFile: <string>
clusterCAFile: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
logVersions: <string>
net.tls.mode

类型:字符串

启用用于所有网络连接的 TLS。 net.tls.mode设置的参数可以是以下之一:

说明
disabled
该服务器不使用 TLS。
allowTLS
服务器之间的连接不使用 TLS。对于传入连接,服务器既接受 TLS,也接受非 TLS。
preferTLS
服务器之间的连接使用 TLS。对于传入连接,服务器既接受 TLS,也接受 TLS。
requireTLS
服务器仅使用并接受 TLS 加密连接。

如果未指定 --tlsCAFiletls.CAFile 且您未使用 x.509 身份验证,则必须将 tlsUseSystemCA 参数设置为 true。这使得 MongoDB 在连接到启用 TLS 的服务器时使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定 --tlsCAFiletls.CAFile,除非使用 --tlsCertificateSelector

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.certificateKeyFile

类型:字符串

包含 TLS 证书和密钥的.pem文件。

从 MongoDB 4开始。 macOS 或 Windows 上的0 ,可以使用net.tls.certificateSelector设置指定来自操作系统的安全证书存储区的证书,而不是 PEM 密钥文件。 certificateKeyFilenet.tls.certificateSelector是互斥的。您只能指定一个。

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.certificateKeyFilePassword

类型:字符串

用于解密证书密钥文件的密码(即certificateKeyFile )。仅当证书密钥文件已加密时才使用net.tls.certificateKeyFilePassword选项。在所有情况下, mongosmongod都会编辑所有日志记录和报告输出中的密码。

从 MongoDB 4.0 开始:

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.certificateSelector

类型:字符串

指定证书属性,以便从操作系统的证书存储中选择匹配的证书用于 TLS/SSL。在 Windows 和 macOS 上可用,作为net.tls.certificateKeyFile的替代方案。

net.tls.certificateKeyFilenet.tls.certificateSelector选项是互斥的。您只能指定一个。

net.tls.certificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:

属性
值类型
说明
subject
ASCII 字符串
证书上的主题名称或公用名
thumbprint
十六进制字符串

以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。

thumbprint 有时称为 fingerprint

在使用系统 SSL 证书存储区时,会用 OCSP(在线证书状态协议)来验证证书的吊销状态。

mongod 搜索操作系统的安全证书存储区,查找验证指定 TLS 证书的完整证书链所需的 CA 证书。具体来说,安全证书存储区必须包含根 CA 以及构建 TLS 证书的完整证书链所需的任何中间 CA 证书。

警告

如果您使用net.tls.certificateSelector和/或net.tls.clusterCertificateSelector ,我们建议使用net.tls.CAFilenet.tls.clusterFile来指定根和中间 CA 证书

例如,如果 TLS 证书是使用单个根 CA 证书签署的,则安全证书存储区必须包含相应的根 CA 证书。如果 TLS 证书是使用中间 CA 证书签署的,则安全证书存储区必须包含相应的中间 CA 证书 根 CA 证书。

注意

将 或--tlsCertificateSelector 设置为net.tls.certificateSelector 时,无法使用rotateCertificates 命令或db.rotateCertificates() shell 方法thumbprint

net.tls.clusterCertificateSelector

类型:字符串

指定证书属性,以便从操作系统的证书存储区中选择匹配的证书以用于内部 x.509 成员身份验证。

在 Windows 和 macOS 上可用,作为net.tls.clusterFile的替代方案。

net.tls.clusterFilenet.tls.clusterCertificateSelector选项是互斥的。您只能指定一个。

net.tls.clusterCertificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:

属性
值类型
说明
subject
ASCII 字符串
证书上的主题名称或公用名
thumbprint
十六进制字符串

以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。

thumbprint 有时称为 fingerprint

mongod 搜索操作系统的安全证书存储区,查找验证指定集群证书的完整证书链所需的 CA 证书。具体来说,安全证书存储区必须包含根 CA 以及构建集群证书的完整证书链所需的任何中间 CA 证书。

警告

如果您使用net.tls.certificateSelector和/或net.tls.clusterCertificateSelector ,我们建议使用net.tls.CAFilenet.tls.clusterCAFile来指定根 CA 证书和中间 CA 证书。

例如,如果集群证书是使用单个根 CA 证书签署的,则安全证书存储区必须包含该根 CA 证书。如果集群证书是使用中间 CA 证书签署的,则安全证书存储区必须包含中间 CA 证书根 CA 证书。

如果提供的 x,则mongod / mongos会记录连接警告。 509证书会在mongod/mongos主机系统时间后的30天内过期。请参阅x。 509证书即将过期trigger警告以了解更多信息。

net.tls.clusterFile

类型:字符串

.pem 文件,其中包含用于集群或副本集的成员身份验证的 x.509 证书密钥文件。

从 MongoDB 4开始。 0 (在 macOS 或 Windows 上),您可以使用net.tls.clusterCertificateSelector选项指定来自操作系统的安全证书存储区的证书,而不是 PEM 密钥文件。 net.tls.clusterFilenet.tls.clusterCertificateSelector选项是互斥的。您只能指定一个。

如果net.tls.clusterFile未指定用于内部集群身份验证的.pem文件或备用net.tls.clusterCertificateSelector ,则集群使用certificateKeyFile设置中指定的.pem文件或net.tls.certificateSelector返回的证书。

如果使用 x.509 身份验证,则必须指定 --tlsCAFiletls.CAFile,除非使用 --tlsCertificateSelector

如果提供的 x,则mongod / mongos会记录连接警告。 509证书会在mongod/mongos主机系统时间后的30天内过期。请参阅x。 509证书即将过期trigger警告以了解更多信息。

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

重要

适用于 Windows,MongoDB 4 。 0及更高版本不支持加密的 PEM 文件。如果遇到加密的 PEM 文件,则mongod无法启动。要安全地存储和访问用于 Windows 成员身份验证的证书,请使用net.tls.clusterCertificateSelector

net.tls.clusterPassword

类型:字符串

用于解密 x509 --sslClusterFile的密码。 指定的net.tls.clusterPassword 证书密钥文件。仅当证书密钥文件已加密时才使用 选项。在所有情况下,mongosmongod 都会编辑所有日志记录和报告输出中的密码。

从 MongoDB 4.0 开始:

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.clusterAuthX509

7.0 版本中的新增功能

net:
tls:
clusterAuthX509:
attributes: <string>
extensionValue: <string>
net.tls.clusterAuthX509.attributes

类型:字符串

7.0 版本中的新增功能

指定服务器期望集群成员节点在其证书使用者名称中包含的一组 X.509 标识名 (DN) 属性和值。这允许您使用不包含 DC、O 和 OU 值的证书来对集群成员进行身份验证。

设置 attributes 后,MongoDB 使用 DN 匹配证书并忽略扩展值。

net.tls.clusterAuthX509.extensionValue

类型:字符串

7.0 版本中的新增功能

指定与 MongoDB 集群成员资格扩展 OID 相对应的扩展值,服务器希望集群成员节点包含在其证书中。这将允许使用不包含 DC、O 和 OU 值的证书来对集群成员进行身份验证。

设置 extensionValue 后,MongoDB 使用证书扩展值匹配证书并忽略标识名 (DN)。

net.tls.CAFile

类型:字符串

.pem 文件,其中包含来自证书颁发机构的根证书链。使用相对或绝对路径指定 .pem 文件的文件名。

仅限 Windows/macOS
如果使用net.tls.certificateSelector和/或net.tls.clusterCertificateSelector请勿使用net.tls.CAFile指定根 CA 证书和中间 CA 证书。将验证net.tls.certificateSelector和/或net.tls.clusterCertificateSelector证书的完整信任链所需的所有 CA 证书存储在安全证书存储区中。

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.clusterCAFile

类型:字符串

包含来自证书颁发机构的根证书链的.pem文件,用于验证建立连接的客户端提供的证书。使用相对或绝对路径指定.pem文件的文件名。 net.tls.clusterCAFile要求设置net.tls.CAFile

如果net.tls.clusterCAFile未指定用于验证来自建立连接的客户端的证书的.pem文件,集群将使用net.tls.CAFile选项中指定的.pem文件。

net.tls.clusterCAFile 允许您使用单独的证书颁发机构来验证 TLS 握手的客户端到服务器和服务器到客户端部分。

从4开始。 0 ,在 macOS 或 Windows 上,您可以使用操作系统安全存储区中的证书来代替 PEM 密钥文件。请参阅net.tls.clusterCertificateSelector 。使用安全存储时,您不需要但也可以指定net.tls.clusterCAFile

仅限 Windows/macOS
如果使用net.tls.certificateSelector和/或net.tls.clusterCertificateSelector请勿使用net.tls.clusterCAFile指定根 CA 证书和中间 CA 证书。将验证net.tls.certificateSelector和/或net.tls.clusterCertificateSelector证书的完整信任链所需的所有 CA 证书存储在安全证书存储区中。

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.CRLFile

类型:字符串

包含证书吊销列表的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

注意

  • 从 MongoDB 4开始。 0 ,不能在 macOS 上指定net.tls.CRLFile 。相反,您可以使用系统 SSL 证书存储区,该存储区使用 OCSP(在线证书状态协议)来验证证书的吊销状态。请参阅net.tls.certificateSelector以使用系统 SSL 证书存储区。

  • 为了检查证书吊销状况,MongoDB enables默认使用 OCSP(在线证书状态协议)作为指定 CRL 文件或使用系统 SSL 证书存储区的替代方法。

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.allowConnectionsWithoutCertificates

类型:布尔值

默认情况下,服务器会绕过客户端证书验证,除非将服务器配置为使用 CA 文件。如果提供了 CA 文件,则会应用以下规则:

  • 对于不提供证书的客户端,mongodmongos 会对 TLS/SSL 连接进行加密(假定已成功建立连接)。

  • 对于提供证书的客户端, mongosmongod使用CAFile指定的根证书链执行证书验证,并拒绝证书无效的客户端。

net.tls.allowConnectionsWithoutCertificates如果您的混合部署包含不或无法向 或 提供证书的客户端,请使用mongos mongod选项。

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

net.tls.allowInvalidCertificates

类型:布尔值

启用或禁用集群中其他服务器上的 TLS 证书的验证检查,并允许使用无效证书进行连接。

注意

如果您在使用 x.509 身份验证时指定 --tlsAllowInvalidCertificatestls.allowInvalidCertificates: true,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。

使用 net.tls.allowInvalidCertificates 设置时,MongoDB 会记录有关使用无效证书的警告。

有关 TLS 和 MongoDB 的更多信息,请参阅配置 TLS/SSL 的mongodmongos内部/成员身份验证。

net.tls.allowInvalidHostnames

类型:布尔值

默认:false

net.tls.allowInvalidHostnamestrue 时,MongoDB 禁用 TLS 证书中的主机名验证。这样,即使证书的主机名与指定的主机名不匹配,mongodmongos 也能连接集群中的其他 MongoDB 实例。

有关 TLS 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongodmongos

net.tls.disabledProtocols

类型:字符串

防止使用 TLS 运行的 MongoDB Server 接受使用特定协议的传入连接。要指定多个协议,请使用逗号分隔的协议列表,但不要在逗号后使用空格。如果在协议名称前包含空格,服务器会将其解释为无法识别的协议并且不会启动。

net.tls.disabledProtocols可识别以下协议: TLS1_0TLS1_1TLS1_2TLS1_3

  • 在 macOS 上,您无法在禁用 TLS1_1 的情况下,让 TLS1_0TLS1_2 同时启用。您必须至少禁用后两者中的一个,比如 TLS1_0,TLS1_1

  • 若要列出多个协议,请指定为逗号分隔的协议列表,逗号后不带空格。例如 TLS1_0,TLS1_1

  • 指定无法识别的协议或在逗号后包含空格,将会阻止服务器启动。

  • 指定的禁用协议将覆盖任何默认禁用的协议。

MongoDB 禁用 TLS 1 。如果 TLS 1 0 1 + 在系统中可用。要启用 TLS 1 。 0 ,将none指定为net.tls.disabledProtocols

副本集和分片集群的成员必须至少使用一个共同协议。

提示

另请参阅:

net.tls.FIPSMode

类型:布尔值

mongosmongod启用或禁用 TLS 库的 FIPS 模式。系统必须有符合 FIPS 标准的库才能使用net.tls.FIPSMode选项。

注意

只有 MongoDB Enterprise 支持与 FIPS 兼容的 TLS/SSL。有关更多信息,请参阅为 FIPS 配置 MongoDB

net.tls.logVersions

类型:字符串

指示 mongosmongod 在客户端使用指定 TLS 版本进行连接时记录消息。

指定单个 TLS 版本或以逗号分隔的多个 TLS 版本的列表。

例子

指示mongosmongod在客户端使用 TLS 1连接时记录消息。 2或 TLS 1 。 3 ,将net.tls.logVersions设置为"TLS1_2,TLS1_3"

net:
compression:
compressors: <string>
net.compression.compressors

默认:snappy,zstd,zlib

指定默认压缩程序用于此 mongodmongos 实例与以下对象之间的通信:

  • 部署的其他成员(如果实例是副本集或分片集群的一部分)

  • mongosh

  • 支持 OP_COMPRESSED 消息格式的驱动程序。

MongoDB 支持以下压缩程序:

要禁用网络压缩,请将值设置为 disabled

重要

当双方都启用网络压缩时,消息就会被压缩。否则,各方之间的消息不会被压缩。

如果指定多个压缩程序,则列出压缩程序的顺序以及通信发起者都很重要。例如,如果mongosh指定以下网络压缩程序zlib,snappymongod指定snappy,zlib ,则mongoshmongod之间的消息使用zlib

如果各方未共享至少一个通用压缩程序,则各方之间的消息将不会被压缩。例如,如果mongosh指定网络压缩程序zlibmongod指定snappy ,则mongoshmongod之间的消息不会被压缩。

security:
keyFile: <string>
clusterAuthMode: <string>
authorization: <string>
transitionToAuth: <boolean>
javascriptEnabled: <boolean>
redactClientLogData: <boolean>
clusterIpSourceAllowlist:
- <string>
sasl:
hostName: <string>
serviceName: <string>
saslauthdSocketPath: <string>
enableEncryption: <boolean>
encryptionCipherMode: <string>
encryptionKeyFile: <string>
kmip:
keyIdentifier: <string>
rotateMasterKey: <boolean>
serverName: <string>
port: <string>
clientCertificateFile: <string>
clientCertificatePassword: <string>
clientCertificateSelector: <string>
serverCAFile: <string>
connectRetries: <int>
connectTimeoutMS: <int>
ldap:
servers: <string>
bind:
method: <string>
saslMechanisms: <string>
queryUser: <string>
queryPassword: <string | array>
useOSDefaults: <boolean>
transportSecurity: <string>
timeoutMS: <int>
userToDNMapping: <string>
authz:
queryTemplate: <string>
validateLDAPServerConfig: <boolean>
security.keyFile

类型:字符串

密钥文件的路径,该文件存储 MongoDB 实例用于在分片集群副本集中相互验证的共享密钥。 keyFile意味着security.authorization 。有关更多信息,请参阅内部/会员身份验证

用于内部成员身份验证的密钥文件使用 YAML 格式,以允许密钥文件中包含多个密钥。 YAML 格式接受以下任一项:

  • 单个密钥字符串(与早期版本相同)

  • 键字符串序列

YAML 格式与使用文本文件格式的现有单密钥文件兼容。

security.clusterAuthMode

类型:字符串

默认:keyFile

集群身份验证时使用的身份验证方式。如果使用内部 x.509 身份验证,请在此处指定。此选项可为以下值之一:

说明
keyFile
使用密钥文件进行身份验证。仅接受密钥文件。
sendKeyFile
用于滚动升级目的。发送密钥文件进行 身份验证,但可以接受密钥文件和 x.509 证书。
sendX509
用于滚动升级目的。发送 x.509 证书进行身份验证,但可以同时接受密钥文件和 x.509 证书。
x509
推荐。发送 x.509 证书进行身份验证,仅接受 x.509 证书。

如果未指定 --tlsCAFiletls.CAFile 且您未使用 x.509 身份验证,则必须将 tlsUseSystemCA 参数设置为 true。这使得 MongoDB 在连接到启用 TLS 的服务器时使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定 --tlsCAFiletls.CAFile,除非使用 --tlsCertificateSelector

有关 TLS 和 MongoDB 的详细信息,请参阅为 TLS/SSL 配置 mongodmongos 以及客户端的 TLS/SSL 配置

security.authorization

类型:字符串

默认值:已禁用

启用或禁用基于角色的访问控制(RBAC)以管理每个用户对数据库资源和操作的访问。

将此选项设为以下之一:

说明
enabled
用户只能访问已获得授权的数据库资源和操作。
disabled
用户可以访问任何数据库并执行任何操作。

有关更多信息,请参阅“基于角色的访问控制”。

security.authorization设置仅适用于mongod

security.transitionToAuth

类型:布尔值

默认:false

允许mongodmongos接受和创建与部署中其他mongodmongos实例之间的经过身份验证和未经身份验证的连接。用于执行副本集或分片集群从无身份验证配置到内部身份验证的滚动过渡。需要指定内部身份验证机制,例如security.keyFile

例如,如果使用密钥文件进行内部身份验证,则 mongodmongos 使用匹配的密钥文件与部署中的任何 mongodmongos 创建经过身份验证的连接。如果安全机制不匹配,则 mongodmongos 将使用非验证连接。

使用 }mongodsecurity.transitionToAuth 运行的mongos 不会实施 用户访问控制 。用户无需任何访问控制检查即可连接到您的部署,并执行读取、写入和管理操作。

注意

mongodmongos使用security.transitionToAuth 内部身份验证 运行 且未使用 的mongod } 要求客户端使用 用户访问控制mongos 进行连接。更新客户端以在不使用 的情况下重新启动mongod 或 之前使用适当的 用户mongos 连接到security.transitionToAuth 或 。

security.javascriptEnabled

类型:布尔值

默认值:true

启用或禁用服务器端 JavaScript 执行。禁用后,您便无法使用可在服务器端执行 JavaScript 代码的操作,如 $where 查询运算符、mapReduce 命令、$accumulator$function

如果不使用这些操作,请禁用服务器端脚本。

security.javascriptEnabled可用于mongodmongos 。在早期版本中,该设置仅适用于mongod

security.redactClientLogData

类型:布尔值

仅在 MongoDB Enterprise 中可用。

mongodmongos通过security.redactClientLogData }mongod 运行的 或 会在记录之前编辑与给定日志事件相关的任何消息。这可以防止mongos 或 将数据库中存储的潜在敏感数据写入诊断日志。错误或操作代码、行号和源文件名等元数据在日志中仍然可见。

security.redactClientLogData静态加密TLS/SSL(传输加密)结合使用,以帮助遵守监管要求。

例如,MongoDB 部署可能会将个人身份信息 (PII) 存储在一个或多个集合中。mongodmongos 会记录与 CRUDmongod 操作、分片元数据等相关的事件。 或mongos 有可能会将 PII 作为这些日志记录操作的一部分公开。与mongod mongos一起运行的security.redactClientLogData 或 会在输出到日志之前删除与这些事件相关的任何消息,从而有效地删除 PII。

由于缺少与日志事件相关的数据,对使用security.redactClientLogData } 运行的mongodmongos进行诊断可能会更加困难。有关security.redactClientLogData对日志输出的影响的示例,请参阅进程日志记录手册页面。

在运行中的 mongodmongos 上,使用带有 redactClientLogData 参数的 setParameter 来配置此设置。

security.clusterIpSourceAllowlist

类型:列表

版本 5.0 中的新增功能

IP 地址/CIDR( 无类域间路由)范围, mongod验证来自副本集其他成员的身份验证请求,如果是分片集群的一部分,还验证来自mongos实例的身份验证请求。 mongod验证源 IP 是否明确位于列表中或属于列表中的 CIDR 范围。如果 IP 地址不存在,则服务器不对mongodmongos进行身份验证。

security.clusterIpSourceAllowlist对未经身份验证启动的mongod没有影响

security.clusterIpSourceAllowlist要求指定每个 IPv4 /6 地址或无类域间路由 ( CIDR )范围作为 YAML 列表:

security:
clusterIpSourceAllowlist:
- 192.0.2.0/24
- 127.0.0.1
- ::1

重要

确保security.clusterIpSourceAllowlist包含 IP 地址CIDR 范围,其中包含部署中每个副本集成员或mongos的 IP 地址,以确保集群组件之间的健康通信。

security.clusterIpSourceWhitelist

类型:列表

已在版本5中弃用。 0 :改用security.clusterIpSourceAllowlist

IP 地址/CIDR( 无类域间路由)范围, mongod验证来自副本集其他成员的身份验证请求,如果是分片集群的一部分,还验证来自mongos实例的身份验证请求。 mongod验证源 IP 是否明确位于列表中或属于列表中的 CIDR 范围。如果 IP 地址不存在,则服务器不对mongodmongos进行身份验证。

security.clusterIpSourceWhitelist对未经身份验证启动的mongod没有影响

security.clusterIpSourceWhitelist要求指定每个 IPv4 /6 地址或无类域间路由 ( CIDR )范围作为 YAML 列表:

security:
clusterIpSourceWhitelist:
- 192.0.2.0/24
- 127.0.0.1
- ::1

重要

确保security.clusterIpSourceWhitelist包含 IP 地址CIDR 范围,其中包含部署中每个副本集成员或mongos的 IP 地址,以确保集群组件之间的健康通信。

security:
enableEncryption: <boolean>
encryptionCipherMode: <string>
encryptionKeyFile: <string>
kmip:
keyIdentifier: <string>
rotateMasterKey: <boolean>
serverName: <string>
port: <string>
clientCertificateFile: <string>
clientCertificatePassword: <string>
clientCertificateSelector: <string>
serverCAFile: <string>
connectRetries: <int>
connectTimeoutMS: <int>
activateKeys: <boolean>
keyStatePollingSeconds: <int>
security.enableEncryption

类型:布尔值

默认:false

对 WiredTiger 存储引擎启用加密。必须设置为 true,才能传递加密密钥和配置。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.encryptionCipherMode

类型:字符串

默认值AES256-CBC

用于静态加密的密码模式:

模式
说明
AES256-CBC
采用密码分组链接模式的 256 位高级加密标准
AES256-GCM

采用 Galois/Counter 模式的 256 位高级加密标准

仅在 Linux 上可用。

4.0 版本中的更改:Windows 上的 MongoDB Enterprise 不再支持将 AES256-GCM 作为静态加密的分组密码。仅 Linux 支持此用法。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.encryptionKeyFile

类型:字符串

通过 KMIP以外的进程管理密钥时,本地密钥文件的路径。仅在通过 KMIP 以外的进程管理密钥时设置。如果数据已使用 KMIP 加密,MongoDB 会引发错误。

要求security.enableEncryptiontrue

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.keyIdentifier

类型:字符串

KMIP 服务器中现有密钥的唯一 KMIP 标识符。包括使用与标识符关联的密钥作为系统密钥。只能在第一次为mongod实例启用加密时使用该设置。要求security.enableEncryption为 true。

如果未指定,MongoDB 会请求 KMIP 服务器创建新密钥用作系统密钥。

如果 KMIP 服务器找不到指定标识符的密钥,或者数据已使用密钥加密,则 MongoDB 会抛出错误。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.rotateMasterKey

类型:布尔值

默认:false

如果为 true,则轮换主密钥并对内部密钥库重新加密。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

提示

另请参阅:

security.kmip.serverName

类型:字符串

要连接的 KMIP 服务器的主机名或 IP 地址。要求security.enableEncryption为 true。

您可以将多个 KMIP 服务器指定为逗号分隔的列表,例如server1.example.com,server2.example.com 。启动时, mongod会尝试按列出的顺序与每台服务器建立连接,并选择可以成功建立连接的第一台服务器。 KMIP 服务器选择仅在启动时进行。

mongod 启动时验证与 KMIP 服务器的连接。

--kmipServerName 中指定的服务器名称必须与 KMIP 服务器出示的证书上的主题备用名称 SAN 或公用名 CN 相匹配。SAN 可以是系统名称或 IP 地址。

如果存在 SAN,则 mongod 不会尝试与 CN 配对。

如果 KMIP 服务器的主机名或 IP 地址与 SANCN 都不匹配,则 mongod 不会启动。

从 MongoDB 4.2 开始,在比较 SAN 时,MongoDB 可以比较 DNS 名称或 IP 地址。在之前的版本中,MongoDB 仅能比较 DNS 名称。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.port

类型:字符串

默认:5696

用于与 KMIP 服务器通信的端口号。需要security.kmip.serverName 。要求security.enableEncryption为 true。

如果使用security.kmip.serverName指定多个 KMIP 服务器,则mongod } 将为所有提供的 KMIP 服务器使用security.kmip.port指定的端口。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.clientCertificateFile

类型:字符串

用于在 KMIP 服务器上对 MongoDB 进行身份验证的 .pem 文件的路径。指定的 .pem 文件必须包含 TLS/SSL 证书和密钥。

要使用此设置,还必须指定security.kmip.serverName设置。

注意

从4开始。 0 ,在 macOS 或 Windows 上,您可以使用操作系统安全存储区中的证书来代替 PEM 密钥文件。请参阅security.kmip.clientCertificateSelector

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.clientCertificatePassword

类型:字符串

用于解密客户端证书的密码(即security.kmip.clientCertificateFile ),用于在 KMIP 服务器上对 MongoDB 进行身份验证。仅当证书已加密时才使用该选项。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.clientCertificateSelector

类型:字符串

版本4中的新增内容。 0 :(和5 。 0 )

在 Windows 和 macOS 上可用,作为security.kmip.clientCertificateFile的替代方案。

security.kmip.clientCertificateFilesecurity.kmip.clientCertificateSelector选项是互斥的。您只能指定一个。

指定证书属性,以便从操作系统的证书存储区中选择匹配的证书来在 KMIP 服务器上对 MongoDB 进行身份验证。

security.kmip.clientCertificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:

属性
值类型
说明
subject
ASCII 字符串
证书上的主题名称或公用名
thumbprint
十六进制字符串

以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。

thumbprint 有时称为 fingerprint

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.serverCAFile

类型:字符串

CA 文件的路径。用于验证客户端与 KMIP 服务器的连接是否安全。

注意

从4开始。 0 ,在 macOS 或 Windows 上,您可以使用操作系统安全存储区中的证书来代替 PEM 密钥文件。请参阅security.kmip.clientCertificateSelector 。使用安全存储时,您不需要但也可以指定security.kmip.serverCAFile

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.connectRetries

类型:int

默认值:0

与 KMIP 服务器初始连接的重试次数。与connectTimeoutMS一起使用可控制mongod在每次重试之间等待响应的时长。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.connectTimeoutMS

类型:int

默认值:5000

等待 KMIP 服务器响应的超时时间(以毫秒为单位)。如果指定了connectRetries设置,则每次重试时, mongod等待的时间达到connectTimeoutMS指定的值。

取值不得小于 1000

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

security.kmip.activateKeys

类型:布尔值

默认值:true

5.3 版本中的新增功能

在 KMIP 密钥创建后激活所有这些新创建的密钥,然后定期检查这些密钥是否处于活动状态。

security.kmip.activateKeystrue且您在 KMIP 服务器上已有密钥时,必须首先激活密钥,否则mongod节点将无法启动。

如果 mongod 使用的密钥转换为非活动状态,则mongod节点将关闭,除非kmipActivateKeys为 false。为确保您拥有有效的密钥,请使用security.kmip.rotateMasterKey轮换 KMIP 主密钥。

security.kmip.keyStatePollingSeconds

类型:int

默认:900 秒

5.3 版本中的新增功能

mongod 轮询 KMIP 服务器以获取有效密钥的频率(以秒为单位)。

要禁用轮询,请将值设置为 -1

security.kmip.useLegacyProtocol

类型:布尔值

默认:false

7.0 版本新增:(以及 6.0.6)

设置为 true 时,mongod 使用 KMIP 协议的 1.0 或 1.1 版,而不是默认版本。KMIP 协议的默认版本是 1.2。

要在 KMIP 1.0 或 1.1 版中使用审核日志加密,必须在启动时指定 auditEncryptKeyWithKMIPGet

要使用 KMIP 协议 1.0 或 1.1 版本,请替换您的本地值并将如下条目添加到您的 mongod 配置文件中:

security:
enableEncryption: true
kmip:
serverName: "mdbhost.somecompany.com"
serverCAFile: "security/libs/trusted-ca.pem"
clientCertificateFile: "security/libs/trusted-client.pem"
useLegacyProtocol: true
security:
sasl:
hostName: <string>
serviceName: <string>
saslauthdSocketPath: <string>
security.sasl.hostName

类型:字符串

用于配置 SASL 和 Kerberos 身份验证的完全限定服务器域名。SASL 主机名仅覆盖 SASL 和 Kerberos 配置的主机名。

security.sasl.serviceName

类型:字符串

使用 SASL 的服务的注册名称。通过此选项,您可以按实例替换 Kerberos 主体名称的默认 Kerberos 服务名称组件。如未指定,则使用默认值 mongodb

MongoDB 仅允许在启动时设置此选项。setParameter 无法更改此设置。

此选项仅在 MongoDB Enterprise 中可用。

重要

确保驱动程序支持备用服务名称。对于连接到新serviceNamemongosh和其他 MongoDB 工具,请参阅gssapiServiceName选项。

security.sasl.saslauthdSocketPath

类型:字符串

saslauthd 的 UNIX 域套接字文件的路径。

security:
ldap:
servers: <string>
bind:
method: <string>
saslMechanisms: <string>
queryUser: <string>
queryPassword: <string | array>
useOSDefaults: <boolean>
transportSecurity: <string>
timeoutMS: <int>
retryCount: <int>
userToDNMapping: <string>
authz:
queryTemplate: <string>
validateLDAPServerConfig: <boolean>
security.ldap.servers

类型:字符串

仅在 MongoDB Enterprise 中可用。

特定 LDAP 服务器,mongodmongos 在该服务器上对用户进行身份验证或决定授权用户可对给定数据库执行哪些操作。如果指定的 LDAP 服务器有任何复制的实例,则可以在逗号分隔的列表中指定每个复制的服务器的主机和端口。

如果您的 LDAP 基础架构将 LDAP 目录分区到多个 LDAP 服务器,请将 一个 LDAP 服务器或其任何复制实例指定为 。security.ldap.servers MongoDB 支持 RFC 中定义的以下 LDAP451141 引用。 。10 。请勿使用 列出基础架构中的每台 LDAPsecurity.ldap.servers 服务器。

您可以为 LDAP 服务器添加前缀 srv:srv_raw:

如果连接字符串指定 "srv:<DNS_NAME>",则 mongod 将验证 "_ldap._tcp.gc._msdcs.<DNS_NAME>" 是否存在,以使 SRV 支持 Active Directory。如果未找到,mongod 将验证 SRV 是否存在 "_ldap._tcp.<DNS_NAME>"。如果找不到 SRV 记录,则 mongod 会警告您用 "srv_raw:<DNS_NAME>" 代替。

如果您的连接字符串指定了 "srv_raw:<DNS_NAME>"mongod 会对 "<DNS NAME>" 执行 SRV 记录查询。

可以在运行中的 mongodmongos 上使用 setParameter 配置此设置。

如果未设置,mongodmongos 将不能使用 LDAP 身份验证或授权

security.ldap.bind.queryUser

类型:字符串

仅在 MongoDB Enterprise 中可用。

mongodmongos 连接到 LDAP 服务器或在该服务器上执行查询时所绑定的身份。

仅当满足以下任一条件时才需要:

您必须将queryUserqueryPassword一起使用。

如果未设置, mongodmongos不会尝试绑定到 LDAP 服务器。

可以在运行中的 mongodmongos 上使用 setParameter 配置此设置。

注意

Windows MongoDB 部署可以使用useOSDefaults代替queryUserqueryPassword 。您不能同时指定queryUseruseOSDefaults

security.ldap.bind.queryPassword

类型:字符串或数组

仅在 MongoDB Enterprise 中可用。

使用queryUser时用于绑定到 LDAP 服务器的密码。您必须将queryPasswordqueryUser一起使用。

如果未设置,则 mongodmongos 不会尝试绑定到 LDAP 服务器。

您可以使用在运行中的 mongodmongos setParameter 上配置此设置。

ldapQueryPassword setParameter命令接受字符串或字符串数组。如果将ldapQueryPassword设置为数组,则 MongoDB 按顺序尝试每个密码,直到成功为止。使用密码数组滚动 LDAP 帐户密码,无需停机。

注意

Windows MongoDB 部署可以使用useOSDefaults代替queryUserqueryPassword 。您不能同时指定queryPassworduseOSDefaults

security.ldap.bind.useOSDefaults

类型:布尔值

默认:false

仅在 Windows 平台上的 MongoDB Enterprise 中可用。

在连接到 LDAP 服务器时,允许 mongodmongos 使用您的 Windows 登录档案进行身份验证或绑定。

仅在以下情况下才需要:

使用useOSDefaults替换queryUserqueryPassword

security.ldap.bind.method

类型:字符串

默认值:简单

仅在 MongoDB Enterprise 中可用。

mongodmongos方法用于向 LDAP 服务器进行身份验证。与queryUserqueryPassword一起使用,连接 LDAP 服务器。

method 支持以下值:

如果指定sasl ,则可以使用security.ldap.bind.saslMechanisms配置可用的 SASL 机制。 mongodmongos默认使用DIGEST-MD5机制。

security.ldap.bind.saslMechanisms

类型:字符串

默认值:DIGEST-MD5

仅在 MongoDB Enterprise 中可用。

以逗号分隔的 SASL 机制列表 mongodmongos 可使用此列表向 LDAP 服务器进行身份验证。mongodmongos 和 LDAP 服务器必须就至少一种机制达成一致。mongodmongos可在运行时动态加载主机上安装的任何 SASL 机制库。

mongodmongos 主机和远程 LDAP 服务器主机上安装和配置所选 SASL 机制的相应库。默认情况下,操作系统可能包含某些 SASL 库。请遵循与每个 SASL 机制相关的文档来获取有关安装和配置的指南。

如果使用 GSSAPI SASL 机制用于 Kerberos 身份验证,则验证 mongodmongos 主机上的以下内容:

Linux
Windows
如果连接到 Active Directory 服务器,Windows Kerberos 配置会自动生成 Ticket-Granting-Ticket 当用户登录系统时。将useOSDefaults 设置为true ,以允许mongod 或 在连接到 Active Directorymongos 服务器并执行查询时使用生成的档案。

method设置为sasl以使用此选项。

注意

有关 SASL 机制的完整列表,请参阅 IANA 列表。请参阅 LDAP 或 Active Directory 服务的文档来识别与该服务兼容的 SASL 机制。

MongoDB 不是 SASL 机制库的来源,MongoDB 文档也不是安装或配置任何给定 SASL 机制的权威来源。如需获得文档和支持,请咨询 SASL 机制库供应商或所有者。

有关 SASL 的更多信息,请参阅以下资源:

security.ldap.transportSecurity

类型:字符串

默认值:tls

仅在 MongoDB Enterprise 中可用。

默认情况下,mongodmongos会创建与 LDAP 服务器的 TLS/SSL 安全连接。

对于 Linux 部署,必须在 文件中配置相应的 TLS/etc/openldap/ldap.conf 选项。操作系统的包管理器通过 依赖项创建此文件作为 MongoDB Enterpriselibldap 安装的一部分。请参阅TLS Options ldap.conf OpenLDAP 文档 中有关 的文档 以获取更完整的说明。

在 Windows 上部署时,必须将 LDAP 服务器 CA 证书添加到 Windows 证书管理工具中。该工具的确切名称和功能可能会因操作系统版本而异。有关证书管理的更多信息,请参阅您的 Windows 版本对应的文档。

transportSecurity设置为none ,以禁用mongodmongos与 LDAP 服务器之间的 TLS/SSL。

警告

transportSecurity设置为none可在mongodmongos与 LDAP 服务器之间传输纯文本信息,可能还传输凭证。

security.ldap.timeoutMS

类型:int

默认值:10000

仅在 MongoDB Enterprise 中可用。

mongodmongos 应等待 LDAP 服务器响应请求的时间,以毫秒为单位。

如果失败的根源是连接超时,增加timeoutMS的值可以防止 MongoDB 服务器和 LDAP 服务器之间的连接失败。降低timeoutMS的值会缩短 MongoDB 等待 LDAP 服务器响应的时间。

可以在运行中的 mongodmongos 上使用 setParameter 配置此设置。

security.ldap.retryCount

6.1 版本新增内容

类型:int

默认值:0

仅在 MongoDB Enterprise 中可用。

在出现网络错误后服务器 LDAP 管理器重试的操作数。

可以在运行中的 mongodmongos 上使用 setParameter 配置此设置。

security.ldap.userToDNMapping

类型:字符串

仅在 MongoDB Enterprise 中可用。

将提供给mongodmongos进行身份验证的用户名映射到 LDAP 标识名 (DN)。在以下情况下,您可能需要使用userToDNMapping将用户名转换为 LDAP DN:

  • 通过 LDAP 简单绑定进行 LDAP 身份验证,其中用户使用非完整 LDAP DN 的用户名向 MongoDB 进行身份验证。

  • 使用需要 DN 的 LDAP authorization query template

  • 将使用不同身份验证机制(例如 x. 509 、kerberos)向 Mongo DB 进行身份验证的客户端的用户名转换为完整的 LDAP DN 进行授权。

userToDNMapping需要一个用引号括起来的 JSON 字符串,表示有序的文档数组。每个文档都包含正则表达式match以及用于转换传入用户名的substitutionldapQuery模板。

数组中的每个文档均采用以下形式:

{
match: "<regex>"
substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>"
}
字段
说明
例子
match
ECMAScript 格式的正则表达式 (regex),用于与提供的用户名进行匹配。每个括号括起来的部分表示 substitutionldapQuery 使用的正则表达式捕获组。
"(.+)ENGINEERING" "(.+)DBA"
substitution

LDAP 标识名 (DN) 格式模板,用于将 正则表达式匹配的身份验证名称转换为match LDAP DN。每个大括号括起来的数值都会替换为相应的 正则表达式捕获组 通过match 正则表达式从身份验证用户名中提取。

替换的结果必须是 RFC4514 转义字符串。

"cn={0},ou=engineering, dc=example,dc=com"
ldapQuery
LDAP 查询格式模板,该模板将匹配 正则表达式的身份验证名称插入到按照match RFC4515 和 RFC 编码的 LDAP 查询 URI4516 中。每个大括号括起来的数值都会替换为相应的 正则表达式捕获组 通过match 表达式从身份验证用户名中提取。mongodmongos 针对 LDAP 服务器执行查询,以检索经身份验证用户的 LDAP DN。mongodmongos 要求只有一个返回结果才能转换成功, 或mongod mongos则跳过此转换。
"ou=engineering,dc=example, dc=com??one?(user={0})"

注意

RFC 的解释 4514 RFC4515 RFC4516 ,或者 LDAP 查询超出了 MongoDB 文档的范围。请直接查看 RFC 或使用您首选的 LDAP 资源。

对于数组中的每个文档,必须使用 substitutionldapQuery不能在同一文档中同时指定两者。

执行身份验证或授权时,mongodmongos 按给定顺序遍历数组中的每个文档,对照 match 过滤器检查身份验证用户名。如果找到匹配项,mongodmongos 就会进行转换,并使用输出结果对用户进行身份验证。mongodmongos 不会检查数组中的其余文档。

如果给定文档与提供的身份验证名称不匹配,mongodmongos 会继续在文档列表中查找其他匹配项。如果在任何文档中都没有找到匹配项,或者文档描述的转换失败,mongodmongos 将返回错误信息。

如果由于 LDAP 服务器的网络或身份验证失败而无法评估其中一项转换, mongodmongos也会返回错误。 mongodmongos会拒绝连接请求,并且不检查数组中的其余文档。

从 MongoDB 5开始。 0 、 userToDNMapping接受空字符串""或空数组[ ]来代替映射文档。如果向userToDNMapping提供空字符串或空数组,MongoDB 会将经过身份验证的用户名映射为 LDAP DN。以前,提供空映射文档会导致映射失败。

例子

下面展示了两个转换文档。第一个文档匹配以 @ENGINEERING 结尾的任何字符串,将后缀前面的所有内容放入正则表达式捕获组中。第二个文档匹配以 @DBA 结尾的任何字符串,将后缀前面的所有内容放入正则表达式捕获组中。

重要

必须将数组作为字符串传递给 UserToDNMapping。

"[
{
match: "(.+)@ENGINEERING.EXAMPLE.COM",
substitution: "cn={0},ou=engineering,dc=example,dc=com"
},
{
match: "(.+)@DBA.EXAMPLE.COM",
ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})"
}
]"

用户名为 alice@ENGINEERING.EXAMPLE.COM 的用户匹配第一个文档。正则表达式捕获群组 {0} 对应于字符串 alice。生成的输出是 DN "cn=alice,ou=engineering,dc=example,dc=com"

用户名为 bob@DBA.EXAMPLE.COM 的用户匹配第二个文档。正则表达式捕获群组 {0} 对应于字符串 bob。生成的输出是 LDAP 查询 "ou=dba,dc=example,dc=com??one?(user=bob)"mongodmongos 对 LDAP 服务器执行该查询,并返回结果 "cn=bob,ou=dba,dc=example,dc=com"

如果未设置userToDNMapping ,则mongodmongos在尝试根据 LDAP 服务器对用户进行身份验证或授权时,不会对用户名进行任何转换。

可以在运行中的 mongodmongos 上使用 setParameter 数据库命令配置此设置。

security.ldap.authz.queryTemplate

类型:字符串

仅在 MongoDB Enterprise 中可用。

格式符合 RFC4515 的相对 LDAP 查询 URL 和 RFC4516 mongod执行此命令以获取经过身份验证的用户所属的 LDAP 群组。该查询相对于security.ldap.servers 中指定的一个或多个主机。

在 URL 中,可以使用以下替换令牌:

替换令牌
说明
{USER}
替换经过身份验证的用户名,如果指定了 ,则替换为transformed userToDNMapping用户名。
{PROVIDED_USER}

构造查询 URL 时,请确保 LDAP 参数的顺序遵循 RFC4516:

[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ]

如果您的查询包含一个属性,则 mongod 会假定该查询检索该实体所属的 DN 的列表。

如果查询不包含属性,则 mongod 假定该查询检索用户所属的所有实体。

对于查询返回的每个 LDAP DN,mongod 都会在 admin 数据库中为授权用户分配相应的角色。如果 admin 数据库上的角色与 DN 完全匹配,mongod 将向用户授予该角色以及分配给该角色的权限。有关创建角色的信息,请参阅 db.createRole() 方法,了解创建角色的更多信息。

例子

此 LDAP 查询返回 LDAP 用户对象的 memberOf 属性中列出的所有群组。

"{USER}?memberOf?base"

您的 LDAP 配置可能不包含 memberOf 属性作为用户架构的一部分,可能具有不同的属性来报告组成员身份,或者可能无法通过属性跟踪组成员身份。根据您自己独特的 LDAP 配置来配置您的查询。

如果未设置,mongod 将无法使用 LDAP 对用户进行授权。

可以在运行中的 mongod 上配置此设置,但需使用 setParameter 数据库命令。

注意

RFC4515 的解释 、 4516RFC 或 LDAP 查询超出了 MongoDB 文档的范围。请直接查看 RFC 或使用您首选的 LDAP 资源。

security.ldap.validateLDAPServerConfig

类型:布尔值

默认值:true

在 MongoDB Enterprise 中可用

一个标志,用于确定mongodmongos实例是否在启动时检查LDAP server(s)的可用性:

  • 如果为 truemongodmongos 实例会执行可用性检查,并且仅在 LDAP 服务器可用时才会继续启动。

  • 如果为 falsemongodmongos 实例将跳过可用性检查;也就是说,即使 LDAP 服务器不可用,实例也会启动。

setParameter

设置 MongoDB 服务器参数中说明的一个或多个 MongoDB 参数

要在 YAML 配置文件中设置参数,请使用以下格式:

setParameter:
<parameter1>: <value1>
<parameter2>: <value2>

例如,在配置文件中指定 enableLocalhostAuthBypass

setParameter:
enableLocalhostAuthBypass: false
setParameter.ldapUserCacheInvalidationInterval

类型:int

默认值:30

用于与 LDAP 授权 mongod 一起使用。

mongod 在外部用户缓存刷新之间的等待间隔(以秒为单位)。mongod 刷新外部用户缓存后,下次获得 LDAP 授权的用户发出操作时,MongoDB 会从 LDAP 服务器重新获取授权数据。

增加指定的值会增加 mongod 和 LDAP 服务器不同步的时间,但会减少 LDAP 服务器上的负载。相反,减少指定的值会缩短 mongod 和 LDAP 服务器不同步的时间,但会增加 LDAP 服务器上的负载。

setParameter:
ldapUserCacheInvalidationInterval: <int>

在版本 6.1 中更改

  • MongoDB 始终会启用日志功能。因此,MongoDB 删除了 storage.journal.enabled 选项以及相应的 --journal--nojournal 命令行选项。

storage:
dbPath: <string>
journal:
commitIntervalMs: <num>
directoryPerDB: <boolean>
syncPeriodSecs: <int>
engine: <string>
wiredTiger:
engineConfig:
cacheSizeGB: <number>
journalCompressor: <string>
directoryForIndexes: <boolean>
maxCacheOverflowFileSizeGB: <number>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
inMemory:
engineConfig:
inMemorySizeGB: <number>
oplogMinRetentionHours: <double>
storage.dbPath

类型:字符串

默认值

  • /data/db 在 Linux 和 macOS 上

  • \data\db 在 Windows 中

mongod 实例存储数据的目录。

storage.dbPath设置仅适用于mongod

注意

配置文件

mongod.conf 包管理器安装文件中包含的默认配置文件使用以下特定于平台的默认值来设置 storage.dbPath

平台
包管理器:
默认 storage.dbPath
RHEL / CentOS 和 Amazon
yum
/var/lib/mongo
SUSE
zypper
/var/lib/mongo
Ubuntu 和 Debian
apt
/var/lib/mongodb
macOS
brew
/usr/local/var/mongodb

Linux 包初始化脚本不希望storage.dbPath更改为默认值。如果使用 Linux 包并更改storage.dbPath ,则必须使用自己的初始化脚本并禁用内置脚本。

storage.journal.commitIntervalMs

类型:数字

默认值:100

mongod 进程允许在两次日志操作之间的最大时间(以毫秒为单位)。范围可以是 1 到 500 毫秒。较低的值会增加日志的持久性,但会牺牲磁盘性能。

在 WiredTiger 上,默认日志提交间隔为100毫秒。此外,包含或暗示j:true的写入会导致日志立即同步。有关影响同步频率的详细信息或其他条件,请参阅日志记录进程。

storage.journal.commitIntervalMs设置仅适用于mongod

不适用于使用 mongod 内存存储引擎的实例。

storage.directoryPerDB

类型:布尔值

默认:false

true时,MongoDB 使用单独的目录来存储每个数据库的数据。这些目录位于storage.dbPath目录下,每个子目录名称都与数据库名称相对应。

storage.directoryPerDB设置仅适用于mongod

不适用于使用 mongod 内存存储引擎的实例。

从 MongoDB 5开始。 0 ,在启用storage.directoryPerDB时删除数据库中的最终集合(或删除数据库本身)会删除该数据库的新空子目录。

要更改现有部署的storage.directoryPerDB选项,请执行以下操作:

  • 对于独立运行的实例:

    1. 在现有mongodumpmongod 实例上使用 以生成备份。

    2. 停止 mongod 实例。

    3. 添加storage.directoryPerDB配置新的数据目录

    4. 重新启动 mongod 实例。

    5. 使用mongorestore填充新的数据目录。

  • 对于副本集:

    1. 停止从节点成员。

    2. 添加storage.directoryPerDB为该从节点成员配置新的数据目录。

    3. 重启该从节点。

    4. 使用初始同步填充新数据目录。

    5. 以同样的方式更新剩下的从节点。

    6. 降级主节点,并以相同的方式更新降级的成员。

storage.syncPeriodSecs

类型:数字

默认:60

MongoDB 将数据刷新到数据文件之前可以经过的时间量。

请勿对生产系统设置此值。几乎在所有情况下,均应使用默认设置。

mongod进程非常快速地将数据写入日志,并延迟写入数据文件。 storage.syncPeriodSecs日志没有影响,但如果将storage.syncPeriodSecs设置为0 ,日志最终会占用所有可用磁盘空间。

storage.syncPeriodSecs设置仅适用于mongod

不适用于使用 mongod 内存存储引擎的实例。

为了提供持久性数据,WiredTiger 使用了检查点。 有关详细信息,请参阅《日志和 WiredTiger 存储引擎》。

storage.engine

默认值wiredTiger

mongod 数据库的存储引擎。可用值包括:

说明
wiredTiger
inMemory

指定内存中存储引擎

仅在 MongoDB Enterprise 中可用。

如果您尝试使用 storage.dbPath 启动mongod ,而该包含由除storage.engine指定的存储引擎之外的存储引擎生成的数据文件,则mongod将拒绝启动。

storage.oplogMinRetentionHours

类型:double

指定保留 oplog 条目的最小小时数,其中小数值表示小时的小数部分。例如,值1.5表示一小时三十分钟。

该值不得小于 0。值为 0 表示 mongod 应从最旧的条目开始截断 oplog,以维持配置的最大 oplog 大小。

默认值为 0

使用 oplogMinRetentionHours 启动的 mongod 会删除 oplog 条目,仅在以下情况下

  • oplog 已达到配置的 oplog 最大大小,并且

  • oplog 条目早于根据主机系统时钟配置的小时数。

在配置了最短 oplog 保留期时,mongod 有以下行为:

  • oplog 的大小可以不受限制地增长,以便在配置的小时数内保留 oplog 条目。由于写入量高且保留期长,这可能会导致系统磁盘空间减少或耗尽。

  • 如果 oplog 超过其最大值,即使后来恢复到其最大值或配置为较小的最大值,mongod 仍可能继续占用磁盘空间请参阅减小 Oplog 大小不会立即收回磁盘空间

  • mongod 在执行 oplog 条目保留时,将系统挂钟与 oplog 条目创建挂钟时间进行比较。集群组件之间的时钟漂移可能会导致意外的 oplog 保留行为。有关跨集群节点的时钟同步的更多信息,请参阅时钟同步

要在启动mongod后更改 oplog 的最短保留期,请使用replSetResizeOplogreplSetResizeOplog使您能够动态调整 oplog 的大小,而无需重新启动mongod进程。要在重启后保留使用replSetResizeOplog所做的更改,请更新oplogMinRetentionHours的值。

storage:
wiredTiger:
engineConfig:
cacheSizeGB: <number>
journalCompressor: <string>
directoryForIndexes: <boolean>
maxCacheOverflowFileSizeGB: <number>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
storage.wiredTiger.engineConfig.cacheSizeGB

类型:浮点

定义 WiredTiger 用于所有数据的内部缓存的最大大小。索引构建消耗的内存(请参阅 maxIndexBuildMemoryUsageMegabytes)与 WiredTiger 缓存内存是分开的。

取值范围可以从 0.25 GB 到 10000 GB 不等。

从 MongoDB 3.4 开始,默认 WiredTiger 内部缓存大小为以下两者中的较大者:

  • (RAM 大小 - 1 GB)的 50%,或

  • 256 MB。

例如,在总 RAM 为4 GB 的系统上,WiredTiger 缓存使用1 。 5 GB RAM ( 0.5 * (4 GB - 1 GB) = 1.5 GB )。相反,在总计为1的系统上。 25 GB RAM WiredTiger 会将256 MB 分配给 WiredTiger 缓存,因为这超过总 RAM 的一半减去 1 GB ( 0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB )。

注意

在某些情况下,比如在容器中运行时,数据库的内存约束可以低于系统总内存。在此类情况下,将此内存限制而非系统总内存用作最大可用 RAM。

如需查看内存限制,请参阅 hostInfo.system.memLimitMB

避免将 WiredTiger 内部缓存大小增加到超过其默认值。

借助 WiredTiger,MongoDB 可同时利用 WiredTiger 内部缓存和文件系统缓存。

通过文件系统缓存,MongoDB 会自动使用 WiredTiger 缓存或其他进程未使用的所有可用内存。

注意

storage.wiredTiger.engineConfig.cacheSizeGB限制 WiredTiger 内部缓存的大小。操作系统使用可用的空闲内存进行文件系统缓存,这允许压缩的 MongoDB 数据文件保留在内存中。此外,操作系统还使用任何空闲 RAM 来缓冲文件系统区块和文件系统缓存。

为了容纳额外的 RAM 用户,您可能必须减少 WiredTiger 的内部缓存大小。

默认 WiredTiger 内部缓存大小值假设每台计算机有一个 mongod 实例。如果一台机器包含多个 MongoDB 实例,则应减少该设置以容纳其他 mongod 实例。

如果在容器(例如lxccgroups 、Docker 等)中运行mongod ,而该容器无法访问系统中的所有可用 RAM,则必须将storage.wiredTiger.engineConfig.cacheSizeGB设置为一个值小于容器中可用的 RAM 量。确切的数量取决于容器中运行的其他进程。请参阅memLimitMB

storage.wiredTiger.engineConfig.journalCompressor

默认值:snappy

指定用于压缩 WiredTiger 日志数据的压缩类型。

可用的压缩类型有:

storage.wiredTiger.engineConfig.directoryForIndexes

类型:布尔值

默认:false

storage.wiredTiger.engineConfig.directoryForIndexestrue时, mongod将索引和集合存储在数据(即storage.dbPath )目录下的单独子目录中。具体来说, mongod将索引存储在名为index的子目录中,并将集合数据存储在名为collection的子目录中。

您可以使用符号链接,为索引指定不同的位置。具体而言,当 mongod 实例运行时,将 index 子目录移至目标并在数据目录下创建一个名为 index 的符号链接,指向新目标。

storage.wiredTiger.engineConfig.zstdCompressionLevel

类型:整型

默认:6

指定使用 zstd 压缩器时的压缩级别。

数值范围从 1 到 22。

zstdCompressionLevel 的指定值越高,应用的压缩率就越高。

仅当blockCompressor设置为zstd时适用。

从 MongoDB 5.0 开始提供

storage.wiredTiger.collectionConfig.blockCompressor

默认值:snappy

指定集合数据的默认压缩类型。创建集合时,您可以针对每个集合覆盖此设置。

可用的压缩类型有:

storage.wiredTiger.collectionConfig.blockCompressor会影响创建的所有集合。如果更改现有 MongoDB 部署上storage.wiredTiger.collectionConfig.blockCompressor的值,则所有新集合都将使用指定的压缩程序。现有集合继续使用创建时指定的压缩程序,或当时的默认压缩程序。

storage.wiredTiger.indexConfig.prefixCompression

默认值:true

为索引数据启用或禁用前缀压缩

storage.wiredTiger.indexConfig.prefixCompression指定true可为索引数据启用前缀压缩,或为false指定为索引数据禁用前缀压缩。

storage.wiredTiger.indexConfig.prefixCompression设置会影响创建的所有索引。如果更改现有 MongoDB 部署上storage.wiredTiger.indexConfig.prefixCompression的值,则所有新索引都会使用前缀压缩。现有索引不受影响。

storage:
inMemory:
engineConfig:
inMemorySizeGB: <number>
storage.inMemory.engineConfig.inMemorySizeGB

类型:浮点

默认值:物理 RAM 的 50% 减去 1 GB

值的范围可以从 256 MB 到 10 TB,并且可以是浮点数。

内存存储引擎数据分配的最大内存量,包括索引、oplog(如果 mongod 是副本集的一部分)、副本集或分片集群元数据等。

默认情况下,内存存储引擎使用物理 RAM 大小减去 1 GB 后的 50%。

注意

Enterprise 版功能

仅在 MongoDB Enterprise 中可用。

operationProfiling:
mode: <string>
slowOpThresholdMs: <int>
slowOpSampleRate: <double>
filter: <string>
operationProfiling.mode

类型:字符串

默认值off

指定应该进行性能分析的操作。以下分析器级别可用:

等级
说明
off
分析器已关闭,因此不收集任何数据。这是默认的分析器级别。
slowOp
分析器会收集耗时超过 slowms 值的操作的数据。
all
该分析器会收集所有操作的数据。

警告

分析会降低性能,并在系统日志中暴露未经加密的查询数据。在生产部署中配置和启用分析器之前,请仔细考虑对性能和安全的影响。

有关潜在性能下降的更多信息,请参阅分析器开销

operationProfiling.slowOpThresholdMs

类型:整型

默认值:100

慢速操作时长阈值(以毫秒为单位)。运行时长超过此阈值的操作被视为慢速操作。

logLevel 设置为0 时,MongoDB 会按照 确定的速率将 慢速slowOpSampleRate 操作记录到诊断日志中。

在较高的logLevel设置下,所有操作无论延迟如何,都会显示在诊断日志中,但以下情况除外:从节点记录慢速 oplog 条目消息。从节点仅记录慢速 oplog 条目;增加logLevel不会记录所有 oplog 条目。

此设置适用于 mongodmongos

  • 对于 mongod 实例,该设置会影响诊断日志,如果启用,还会影响分析器。

  • 对于 mongos 实例,该设置仅影响诊断日志,不影响分析器,因为在 mongos 上无法进行分析。

operationProfiling.slowOpSampleRate

类型:double

默认值:1.0

应分析或记录的慢速操作的比例。 operationProfiling.slowOpSampleRate接受介于0和1 (含)之间的值。

在 4.0 版中进行了更改slowOpSampleRate 设置适用于 mongodmongos。在早期版本中,slowOpSampleRate 只用于 mongod

  • 对于 mongod 实例,该设置会影响诊断日志,如果启用,还会影响分析器。

  • 对于 mongos 实例,该设置仅影响诊断日志,不影响分析器,因为 mongos 上无法进行分析。

operationProfiling.filter

类型:查询文件的字符串表示

一个过滤器表达式,用于控制要分析和记录的操作。

设置filter时, slowOpThresholdMsslowOpSampleRate不用于分析和慢速查询日志行。

在配置文件中设置分析过滤器时,该过滤器将应用于部署中的所有数据库。要为特定数据库设置配置文件过滤器,请使用 db.setProfilingLevel() 方法。

该选项采用以下形式的查询文档的字符串表示形式:

{ <field1>: <expression1>, ... }

<field> 可以是分析器输出中的任何字段<expression>查询条件表达式

要在配置文件中指定分析过滤器,必须:

  • 用单引号将筛选器文档括起来,以便将该文档作为字符串传递。

  • 使用 YAML 格式的配置文件。

例如,以下 filter 将分析器配置为记录耗时超过 2 秒的 query 操作:

operationProfiling:
mode: all
filter: '{ op: "query", millis: { $gt: 2000 } }'
replication:
oplogSizeMB: <int>
replSetName: <string>
enableMajorityReadConcern: <boolean>
replication.oplogSizeMB

类型:整型

oplog的最大大小(以 MB 为单位)。 oplogSizeMB设置配置 oplog 的未压缩大小,而不是磁盘上的大小。

注意

oplog 的大小可能会超过其配置的大小限制,从而避免删除 majority commit point

默认情况下, mongod进程会根据最大可用空间量创建 oplog。对于64位系统,oplog 通常占可用磁盘空间的5 %。

一旦mongod首次创建了 oplog,更改replication.oplogSizeMB选项将不会影响 oplog 的大小。要在启动mongod后更改最大 oplog 大小,请使用replSetResizeOplogreplSetResizeOplog使您能够动态调整 oplog 的大小,而无需重新启动mongod进程。要在重启后保留使用replSetResizeOplog所做的更改,请更新oplogSizeMB的值。

更多信息,请参阅 Oplog 大小

replication.oplogSizeMB设置仅适用于mongod

replication.replSetName

类型:字符串

mongod 所属副本集的名称。副本集中的所有主机必须具有相同的设置名称。

如果您的应用程序连接到多个副本集,则每个副本集的名称必须不同。有些驱动程序会按副本集名称对副本集连接进行分组。

replication.replSetName设置仅适用于mongod

从 MongoDB 4.0 开始:

replication.enableMajorityReadConcern

默认值:true

配置对 "majority" 读关注的支持。

从 MongoDB 5开始。 0和enableMajorityReadConcern无法更改,且始终设置为true 。尝试使用--enableMajorityReadConcern选项启动不支持多数读关注的存储引擎会失败并返回错误消息。

在 MongoDB 的早期版本中, enableMajorityReadConcern是可配置的。

警告

如使用主节点-从节点-仲裁节点 (PSA) 三成员架构,请考虑以下因素:

  • 如果从节点不可用或滞后,写关注 "majority" 可能会导致性能问题。有关如何缓解这些问题的建议,请参阅缓解 PSA 副本集的性能问题

  • 如果使用的全局默认值 "majority",并且写关注小于大多数的大小,则您的查询可能会返回过时(未完全复制)的数据。

sharding:
clusterRole: <string>
archiveMovedChunks: <boolean>
sharding.clusterRole

类型:字符串

mongod 实例在分片集群中的角色。将其设置设为以下之一:

说明
configsvr

将此实例作为配置服务器启动。默认情况下,该实例在端口 27019 上启动。

当您将 MongoDB 实例配置为 clusterRole configsvr时,您还必须指定replSetName

shardsvr

将该实例作为分片启动。默认情况下,该实例在端口 27018 上启动。

当您将 MongoDB 实例配置为 clusterRole shardsvr时,您还必须指定replSetName

注意

设置sharding.clusterRole要求mongod实例在运行时进行复制。要将实例部署为副本集成员,请使用replSetName设置并指定副本集的名称。

sharding.clusterRole设置仅适用于mongod

sharding.archiveMovedChunks

类型:布尔值

默认:false。

在数据段迁移过程中,分片不会保存从该分片中迁移的文档。

注意

仅在 MongoDB EnterpriseMongoDB Atlas 中有用。

auditLog:
destination: <string>
format: <string>
path: <string>
filter: <string>
auditLog.auditEncryptionKeyIdentifier

类型:字符串

6.0 版本中的新功能

指定用于审核日志加密的 Key Management Interoperability Protocol (KMIP) 密钥的唯一标识符。

不能同时使用auditLog.auditEncryptionKeyIdentifierauditLog.localAuditKeyFile

注意

仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。

auditLog.compressionMode

类型:字符串

5.3 版本中的新增功能

指定审核日志加密的压缩模式。您还必须使用auditLog.auditEncryptionKeyIdentifierauditLog.localAuditKeyFile启用审核日志加密。

auditLog.compressionMode 可以设置为以下值之一:

说明
zstd
使用 zstd 算法压缩审核日志。
none (默认)
请勿压缩审核日志。

注意

仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。

auditLog.destination

类型:字符串

设置为auditLog.destination后,将启用审核并指定mongosmongod发送所有审核事件的位置。

auditLog.destination 可能的值:

说明
syslog

将审核事件以 JSON 格式输出到系统日志中。在 Windows 上不可用。审核消息的系统日志严重性级别为 info,设施级别为 info

系统日志消息限制可能会导致审核消息被截断。审核系统既不会检测此类截断,也不会在其出现时报错。

console
将审核事件以 JSON 格式输出到 stdout
file
auditLog.format 中指定的格式将审核事件输出到auditLog.path中指定的文件

注意

仅在 MongoDB EnterpriseMongoDB Atlas 中有用。

auditLog.filter

类型:文档的字符串表示

限制审核系统记录的操作类型的筛选器。该选项采用以下形式的查询文档的字符串表示形式:

{ <field1>: <expression1>, ... }

<field> 可以是审核消息中的任意字段,包括参数文档中返回的字段。<expression>查询条件表达式。

要指定 Atlas 审核过滤器,请将过滤器文档括在单引号 中,以将文档作为字符串传递。

要在配置文件中指定审核筛选器,必须使用配置文件的 YAML 格式。

注意

仅在 MongoDB EnterpriseMongoDB Atlas 中有用。

auditLog.format

类型:字符串

destination如果 为file ,则用于 审核auditLog.format 的输出文件的格式。 选项可为以下值之一:

说明
JSON
将审核事件以 JSON 格式输出到auditLog.path中指定的文件。
BSON
将 BSON 二进制格式的审核事件输出到auditLog.path中指定的文件。

与以 BSON 格式打印相比,将 Atlas 审核事件以 JSON 格式打印到文件更可能导致服务器性能下降。

注意

仅在 MongoDB EnterpriseMongoDB Atlas 中有用。

auditLog.localAuditKeyFile

类型:字符串

5.3 版本中的新增功能

指定本地审核密钥文件的路径和文件名,用于审核日志加密。

注意

仅使用auditLog.localAuditKeyFile进行测试,因为该密钥不安全。要保护密钥的安全,请使用auditLog.auditEncryptionKeyIdentifier和外部 Key Management Interoperability Protocol (KMIP) 服务器。

不能同时使用auditLog.localAuditKeyFileauditLog.auditEncryptionKeyIdentifier

注意

仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。

auditLog.path

类型:字符串

如果 destination的值为 ,则用于 审核file 的输出文件。auditLog.path 选项可以采用完整路径名或相对路径名。

auditLog.runtimeConfiguration

类型:布尔值

指定节点是否允许审核过滤器和 auditAuthorizationSuccess 变量的运行时配置。如为 true,则该节点可以参与在线审核过滤器管理。

replication:
localPingThresholdMs: <int>
sharding:
configDB: <string>
replication.localPingThresholdMs

类型:整型

默认:15

mongos用于确定哪些从节点副本集成员传递来自客户端的读取操作的 ping 时间(以毫秒为单位)。 15的默认值对应于所有客户端驱动程序中的默认值。

mongos收到允许读取从节点成员的请求时, mongos会:

  • 找到该副本集中 ping 时间最短的节点。

  • 构造一个副本集节点列表,保持与该副本集中最近的合适节点的 ping 时间在 15 毫秒之内。

    如果您为replication.localPingThresholdMs选项指定一个值, mongos将构造在该值允许的延迟范围内的副本成员列表。

  • 从该列表中随机选择要读取的节点。

根据replication.localPingThresholdMs设置进行比较的成员使用的 Ping 时间是最近 Ping 时间的移动平均值,最多每10秒计算一次。因此,在mongos重新计算平均值之前,一些查询查找到的成员可能会超过阈值。

请参阅读取偏好文档的副本集的读取偏好部分,了解更多信息。

sharding.configDB

类型:字符串

针对该分片集群配置服务器

分片集群的配置服务器将部署为副本集。副本集配置服务器必须运行 WiredTiger 存储引擎

指定配置服务器副本集名称以及至少一个配置服务器副本集成员的主机名和端口。

sharding:
configDB: <configReplSetName>/cfg1.example.net:27019, cfg2.example.net:27019,...

分片集群的 mongos 实例必须指定相同的配置服务器副本集名称,但可指定副本集不同成员的主机名和端口。

processManagement:
windowsService:
serviceName: <string>
displayName: <string>
description: <string>
serviceUser: <string>
servicePassword: <string>
processManagement.windowsService.serviceName

类型:字符串

默认值:mongodb

当作为 Windows 服务运行时,mongosmongod 的服务名称。将此名称与 net start <name>net stop <name> 操作一起使用。

您必须将processManagement.windowsService.serviceName--install--remove选项结合使用。

processManagement.windowsService.displayName

类型:字符串

默认值:mongodb

服务管理应用程序中列出的 MongoDB 名称。

processManagement.windowsService.description

类型:字符串

默认:MongoDB 服务器

运行 mongosmongod 服务描述。

您必须将processManagement.windowsService.description--install选项结合使用。

对于包含空格的说明,必须将说明括在引号中。

processManagement.windowsService.serviceUser

类型:字符串

特定用户环境中的 mongosmongod 服务。该用户必须享有“作为服务登录”权限。

您必须将processManagement.windowsService.serviceUser--install选项结合使用。

processManagement.windowsService.servicePassword

类型:字符串

使用<user> mongos选项运行时,mongodprocessManagement.windowsService.serviceUser 或 的 的密码。

您必须将processManagement.windowsService.servicePassword--install选项结合使用。

MongoDB 删除了已弃用的 MMAPv 1存储引擎和 MMAPv 1特定的配置选项:

删除配置文件设置
删除了命令行选项
storage.mmapv1.journal.commitIntervalMs
storage.mmapv1.journal.debugFlags
mongod --journalOptions
storage.mmapv1.nsSize
mongod --nssize
storage.mmapv1.preallocDataFiles
mongod --noprealloc
storage.mmapv1.quota.enforced
mongod --quota
storage.mmapv1.quota.maxFilesPerDB
mongod --quotaFiles
storage.mmapv1.smallFiles
mongod --smallfiles
storage.repairPath
mongod --repairpath
replication.secondaryIndexPrefetch
mongod --replIndexPrefetch

有关 MongoDB 的早期版本,请参阅相应版本的手册。例如:

← 排序规则区域设置和默认参数