此页面上的配置文件选项适用于 MongoDB 8.0。有关其他版本中的选项,请参阅相应版本的 MongoDB 手册。
注意
如果使用 MongoDB Atlas 来管理云中的 MongoDB 部署,则无需创建配置文件。要了解如何为 MongoDB Atlas 部署配置设置,请参阅配置其他设置。
MongoDB 二进制文件还会读取操作系统环境变量。
配置文件
您可以使用配置文件在初创企业时配置 mongod 和 mongos 实例。配置文件包含等效于 mongod 和 mongos 命令行选项的设置。请参阅自管理配置和命令行选项映射。
您还可以在配置文件中添加注释以解释服务器的设置。
如果使用软件包管理器(例如 Linux 上的
yum或apt,或 macOS 上的brew)安装 MongoDB,或者使用 Windows 上的 MSI 安装程序安装 MongoDB,则安装过程中会提供默认配置文件:平台方法配置文件Linux
apt,yum或zypper包管理器/etc/mongod.confmacOS
brew包管理器:/usr/local/etc/mongod.conf(在英特尔处理器上),或/opt/homebrew/etc/mongod.conf(在 Apple M1 处理器上)Windows
MSI 安装程序
<install directory>\bin\mongod.cfg如果您通过下载的
TGZ或ZIP文件安装 MongoDB,则必须创建自己的配置文件。基本示例配置是一个很好的开始地方。
文件格式
以下示例配置文件包含多个 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.path 、storage.dbPath 和processManagement.fork 或MONGODB_CONFIG_OVERRIDE_NOFORK 系统环境变量的特定值。如果修改了默认配置文件中的这些设置,mongod 可能无法启动。
| [1] | YAML 是 JSON 的超集。 |
外部来源的值
以下扩展指令可用:
扩展指令 | 说明 |
|---|---|
有关完整文档,请参阅自管理 MongoDB 的外部配置值。
使用配置文件
如要使用配置文件来配置 mongod 或 mongos,请使用 --config 选项或 -f 选项指定配置文件,如以下示例所示:
mongod --config /etc/mongod.conf mongos --config /etc/mongos.conf
您还可以使用 -f 别名:
mongod -f /etc/mongod.conf mongos -f /etc/mongos.conf
如果您从程序包安装并使用系统的初始化脚本启动了 MongoDB,那么您已经在使用配置文件了。
扩展指令和 --configExpand
如果在配置文件中使用扩展指令,则在启动 mongod 或 mongos 时必须包含 --configExpand 选项。例如:
mongod --config /etc/mongod.conf --configExpand "rest,exec" mongos --config /etc/mongos.conf --configExpand "rest,exec"
如果配置文件包含扩展指令,而您在启动 mongod / mongos 时没有在 --configExpand 选项中指定该指令,则 mongod / mongos 将无法启动。
核心选项
systemLog 选项
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]
详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
要对命名组件使用不同的详细级别,请使用该组件的详细级别设置。示例,使用
systemLog.component.accessControl.verbosity专门为ACCESS组件设立详细级别。有关特定组件的详细级别设置,请参阅
systemLog.component.<name>.verbosity设置。有关设置日志详细级别的各种方法,请参阅配置日志详细级别。
[2] 从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录
D2。在以前版本中,MongoDB 日志消息仅为调试级别指定D。
systemLog.quiet类型:布尔值
默认:false
在尝试限制输出量的安静模式下运行
mongos或mongod。systemLog.quiet不建议在生产系统中使用,因为它可能会使特定连接期间的追踪问题变得更加困难。
systemLog.syslogFacility类型:字符串
默认:用户
将消息记录到系统日志时使用的设施级别。操作系统的系统日志实施必须支持您指定的值。要使用此选项,必须将
systemLog.destination设立为syslog。
systemLog.path类型:字符串
mongod或mongos应将所有诊断日志信息发送到的日志文件路径,而不是标准输出或托管的 系统日志。 MongoDB 会在指定路径创建日志文件。Linux 包初始化脚本并不希望
systemLog.path更改为非默认值。如果使用 Linux 包并更改systemLog.path,则必须使用自己的初始化脚本并禁用内置脚本。
systemLog.logAppend类型:布尔值
默认:false
当
true、mongos或mongod在实例重新启动时将新条目附加到现有日志文件的末尾。如果没有此选项,mongod或mongos会备份现有日志并创建新文件。
systemLog.logRotate类型:字符串
默认:重命名
确定轮换服务器日志和/或审核日志时
logRotate命令的行为。指定rename或reopen:rename对日志文件进行重命名。reopen按照典型的 Linux/Unix 日志轮换行为关闭并重新打开日志文件。使用 Linux/Unix logrotate 实用程序时使用reopen避免日志丢失。reopen如果指定systemLog.logAppend,则还必须将 设立为true。
systemLog.destination类型:字符串
MongoDB发送所有日志输出的目标。指定
file或syslog。如果指定file,则还必须指定systemLog.path。如果不指定
systemLog.destination,MongoDB 会将所有日志输出发送到标准输出。警告
syslog守护进程在记录消息时生成时间戳,而不是在 MongoDB 发出消息时生成时间戳。这可能会导致日志条目的时间戳产生误导,尤其是当系统负载较重时。我们建议对生产系统使用file选项,以确保时间戳的准确性。
systemLog.timeStampFormat类型:字符串
Default: iso8601-local
日志消息中时间戳的时间格式。指定以下值之一:
值说明iso8601-utc以 ISO-8601 格式显示协调通用时间 (UTC) 的时间戳。例如,对于纪元开始时的纽约:
1970-01-01T00:00:00.000Ziso8601-local以 ISO-8601 格式显示当地时间的时间戳。例如,对于纪元开始时的纽约:
1969-12-31T19:00:00.000-05:00注意
时间戳格式不再支持
ctime。ctime格式日期的示例为:Wed Dec 31 18:17:54.811。
systemLog.component 选项
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.assert.verbosity类型:整型
默认值:0
MongoDB 中用户操作遇到的断言的日志消息详细程度。通常,当操作返回错误时,会触发断言。请参阅
ASSERT组件。
systemLog.component.accessControl.verbosity类型:整型
默认值:0
访问控制相关组件的日志信息详细级别。请参阅
ACCESS组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.command.verbosity类型:整型
默认值:0
与命令相关的组件的日志消息详细级别。请参阅
COMMAND组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.control.verbosity类型:整型
默认值:0
与控制操作相关的组件的日志消息详细级别。请参阅
CONTROL组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.ftdc.verbosity类型:整型
默认值:0
与诊断数据集合操作相关的组件的日志消息详细级别。请参阅
FTDC组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.geo.verbosity类型:整型
默认值:0
与地理空间分析操作相关的组件的日志消息详细级别。请参阅
GEO组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.index.verbosity类型:整型
默认值:0
与索引操作相关的组件的日志消息详细级别。请参阅
INDEX组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.network.verbosity类型:整型
默认值:0
与网络操作相关的组件的日志消息详细级别。请参阅
NETWORK组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.query.verbosity类型:整型
默认值:0
与查询操作相关的组件的日志消息详细级别。请参阅
QUERY组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.query.rejected.verbosity类型:整型
默认值:0
8.0版本新增。
与拒绝的查询操作相关的组件的日志消息详细程度。有关详细信息,请参阅
REJECTED组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.queryStats.verbosity类型:整型
默认值:0
与
$queryStats调用相关组件的日志消息详细级别。请参阅QUERYSTATS组件。详细程度级别的范围可以从
0到5:0是默认的日志详细程度级别,仅包括信息性消息。在此级别上不记录$queryStats调用。1到2会增加详细级别,以包含algorithm为"hmac-sha-256"的$queryStats调用。所有 HMAC 密钥均已被隐藏。3到5会增加详细级别,以包括$queryStats个调用,其中algorithm是"hmac-sha-256",以及相应的结果。每个结果都有自己的条目,最后一个条目带有字符串"we finished"。
systemLog.component.replication.verbosity类型:整型
默认值:0
复制相关组件的日志信息详细级别。请参阅
REPL组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.replication.election.verbosity类型:整型
默认值:0
与选举相关组件的日志信息详细级别。请参阅
ELECTION组件。如果未设置
systemLog.component.replication.election.verbosity,则systemLog.component.replication.verbosity级别也适用于选举组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.replication.heartbeats.verbosity类型:整型
默认值:0
与心跳相关组件的日志消息详细级别。请参阅
REPL_HB组件。如果未设置
systemLog.component.replication.heartbeats.verbosity,则systemLog.component.replication.verbosity级别也适用于心跳组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.replication.initialSync.verbosity类型:整型
默认值:0
与 InitialSync 相关的组件的日志消息详细级别。请参阅
INITSYNC组件。如果未设置
systemLog.component.replication.initialSync.verbosity,则systemLog.component.replication.verbosity级别也适用于 initialSync 组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.replication.rollback.verbosity类型:整型
默认值:0
与回滚相关的组件的日志消息详细程度。请参阅
ROLLBACK组件。如果未设置
systemLog.component.replication.rollback.verbosity,则systemLog.component.replication.verbosity级别也适用于回滚组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.sharding.verbosity类型:整型
默认值:0
分片相关组件的日志信息详细级别。请参阅
SHARDING组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.verbosity类型:整型
默认值:0
与存储相关的组件的日志消息详细级别。请参阅
STORAGE组件。如果未设置
systemLog.component.storage.journal.verbosity,则systemLog.component.storage.verbosity级别也适用于日志组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.journal.verbosity类型:整型
默认值:0
与日志相关的组件的日志消息详细级别。请参阅
JOURNAL组件。如果未设置
systemLog.component.storage.journal.verbosity,则日志记录组件具有与父存储组件相同的详细程度:即,如果已设置,则为systemLog.component.storage.verbosity级别,否则为默认详细程度。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.recovery.verbosity类型:整型
默认值:0
与恢复相关的组件的日志消息详细级别。请参阅
RECOVERY组件。如果未设置
systemLog.component.storage.recovery.verbosity,则systemLog.component.storage.verbosity级别也适用于恢复组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎相关的组件的日志消息详细级别。请参阅
WT组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtBackup.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的备份操作相关的组件的日志消息详细程度。请参阅
WTBACKUP组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtCheckpoint.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的检查点操作相关的组件的日志消息详细程度。请参阅
WTCHKPT组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtCompact.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的压实操作相关的组件的日志消息详细程度。请参阅
WTCMPCT组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtEviction.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的逐出操作相关的组件的日志消息详细程度。请参阅
WTEVICT组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtHS.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的历史记录存储操作相关的组件的日志消息详细程度。请参阅
WTHS组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtRecovery.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的恢复操作相关的组件的日志消息详细程度。请参阅
WTRECOV组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtRTS.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的回滚到稳定 (RTS) 操作相关组件的日志消息详细程度。请参阅
WTRTS组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtSalvage.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的数据打捞 (salvage) 操作相关的组件的日志消息详细程度。请参阅
WTSLVG组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtTimestamp.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎使用的时间戳相关的组件的日志消息详细程度。请参阅
WTTS组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtTransaction.verbosity类型:整型
默认:-1
5.3版本新增。
WiredTiger 存储引擎执行的事务操作相关组件的日志消息详细程度。请参阅
WTTXN组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtVerify.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的验证操作相关的组件的日志消息详细程度。请参阅
WTVRFY组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
systemLog.component.storage.wt.wtWriteLog.verbosity类型:整型
默认:-1
5.3版本新增。
与 WiredTiger 存储引擎执行的日志写入操作相关的组件的日志消息详细程度。请参阅
WTWRTLOG组件。详细程度级别的范围可以从
0到5:0是 MongoDB 的默认日志详细程度级别,它包括信息性消息。1到5提高详细程度以包括调试消息。
processManagement 选项
processManagement: fork: <boolean> pidFilePath: <string> timeZoneInfo: <string>
processManagement.fork类型:布尔值
默认:false
启用守护进程模式,在背景中运行
mongos或mongod进程。默认情况下,mongos或mongod不作为守护进程运行。要将mongos或mongod用作守护进程,请设置processManagement.fork或使用处理守护进程的控制进程(示例systemd)。Windows 不支持
processManagement.fork选项。Linux 包初始化脚本并不希望
processManagement.fork更改为非默认值。如果使用 Linux 包并更改processManagement.fork,则必须使用自己的初始化脚本并禁用内置脚本。注意
或者,您可以将系统上的
MONGODB_CONFIG_OVERRIDE_NOFORK环境变量设置为true,以在背景运行mongos或mongod进程。如果设置了环境变量,则会覆盖processManagement.fork的设置。
processManagement.pidFilePath类型:字符串
指定文件位置以存储
mongos或mongod进程的进程 ID (PID)。运行mongod或mongos进程的用户必须能够写入此路径。如果未指定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库提供时区之间的准确转换。由于最近的更新,timelib可能会在旧版本的MongoDB中创建不准确的时区域转换。要在 之前的MongoDB版本中显式链接到时区域数据库,下载时区域数据库。并使用5.0
timeZoneInfo参数。
net 选项
在版本 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类型:整型
默认值:
27018
mongod,如果 是shard member如果
mongod是配置服务器节点,则 27019
MongoDB 实例监听客户端连接的 TCP 端口。
net.port选项接受0和65535之间的值范围。将端口设置为0会将mongos或mongod配置为使用操作系统分配的任意端口。
net.bindIp类型:字符串
默认值:localhost
mongos或mongod应该监听客户端连接的主机名和/或 IP 地址和/或完整 Unix 域套接字路径。您可以将mongos或mongod连接到任何接口。要绑定到多个地址,请输入逗号分隔值的列表。例子
localhost,/tmp/mongod.sock您可以指定 IPv4 和 IPv6 解决方案,或解析为 IPv4 或 IPv6 地址的主机名。
例子
localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513注意
如果向 指定 IPv6 解决或可解析为 IPv6
net.bindIp解决的主机名,则必须以 开头mongos或mongodnet.ipv6 : true,以启用IPv6 支持。为 指定 IPv6net.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设置。注意
net.bindIp和net.bindIpAll是互斥的。也就是说,您可以指定其中之一,但不能同时指定两者。命令行选项
--bind_ip会覆盖配置文件设置net.bindIp。
要为水平分割 DNS 配置集群节点,使用主机名称,而非 IP 地址。
从 MongoDB v5.0 开始,
replSetInitiate和replSetReconfig拒绝使用 IP 地址而不是主机名的配置。使用
disableSplitHorizonIPCheck修改无法更新为使用主机名的节点。该参数仅适用于配置命令。mongod和mongos在初创企业时不依赖disableSplitHorizonIPCheck进行验证。使用 IP 地址而非主机名的旧版mongod和mongos实例可以在升级后启动。配置 IP 地址的实例会记录警告,要求使用主机名称而非 IP 地址。
net.bindIpAll类型:布尔值
默认:false
如果为 true,则
mongos或mongod实例将绑定到所有 IPv4 地址(即0.0.0.0)。如果mongos或mongod以net.ipv6 : true开头,则net.bindIpAll也会绑定到所有 IPv6 地址(即::)。mongos如果以net.ipv6 : true启动,则mongod仅支持 IPv6。仅指定net.bindIpAll并不能启用 IPv6 支持。警告
将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证和强化网络基础设施。
有关 IP 绑定的更多信息,请参阅 IP 绑定文档。
或者,将
net.bindIp设立为::,0.0.0.0或星号"*"(将星号括在引号中以区别于 YAML 别名节点)以绑定到所有IP地址。注意
net.bindIp和net.bindIpAll是互斥的。同时指定两个选项会导致mongos或mongod抛出错误并终止。
net.maxIncomingConnections类型:整型
在版本 8.1 中进行了更改:(以及 8.0.16、7.0.31)
Default (Windows): 1,000,000
Default (Linux): (RLIMIT_NOFILE / 2) * 0.8注意
在Linux上,
net.maxIncomingConnections必须小于或等于 (RLIMIT_NOFILE / 2) * 0.8 的值。如果您尝试设立更大的值, MongoDB会自动使用默认。mongos或mongod接受的最大并行连接数。如果此设置高于操作系统配置的最大连接跟踪阈值,则此设置无效。不要为此选项分配过低的值,否则您可能会在正常的应用程序操作期间遇到错误。
如果您的客户端创建了多个连接,并且允许这些连接超时而不是将其关闭,那么这对于
mongos特别有用。在这种情况下,请将
maxIncomingConnections设立为略高于客户端创建的最大连接数或连接池的最大大小的值。
net.wireObjectCheck类型:布尔值
默认值:true
当为
true时,mongod或mongos实例会在收到客户端请求时验证所有请求,防止客户端将格式不正确或无效的 BSON 插入 MongoDB 数据库。对于子文档嵌套程度较高的对象,
net.wireObjectCheck对性能的影响很小。
net.ipv6类型:布尔值
默认:false
将
net.ipv6设置为true以启用 IPv6 支持。mongos/mongod默认禁用 IPv6 支持。设置
net.ipv6不会指示mongos/mongod侦听任何本地 IPv6 地址或接口。要将mongos/mongod配置为侦听 IPv6 接口,您必须:使用一个或多个 IPv6 地址或解析为 IPv6 地址的主机名配置
net.bindIp,或将
net.bindIpAll设置为true。
net.unixDomainSocket 选项
net: unixDomainSocket: enabled: <boolean> pathPrefix: <string> filePermissions: <int>
net.unixDomainSocket.enabled类型:布尔值
默认值:true
启用或禁用 UNIX 域套接字上的监听。
net.unixDomainSocket.enabled仅应用于基于 Unix 的系统。当
net.unixDomainSocket.enabled为true时,mongos或mongod会侦听 UNIX 套接字。mongos或mongod进程始终侦听 UNIX 套接字,除非满足以下任一条件:net.unixDomainSocket.enabledisfalse--nounixsocket已设置。命令行选项优先于配置文件设置。net.bindIp未设置net.bindIp未指定localhost或其关联的 IP 地址
从官方 Debian 和 Red
mongosmongodHat 或 CentOS 包中安装的 或 ,其bind_ip配置默认设置为127.0.0.1。
net.tls 选项
注意
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 加密连接。
如果未指定
--tlsCAFile或tls.CAFile且您未使用 X.509 身份验证,则必须将tlsUseSystemCA参数设置为true。这使得 MongoDB 在连接到启用 TLS 的服务器时使用系统范围的 CA 证书存储区。如果使用 X.509身份验证,则必须指定
--tlsCAFile或tls.CAFile,除非使用--tlsCertificateSelector。有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
net.tls.certificateKeyFile类型:字符串
包含 TLS 证书和密钥的
.pem文件。在 macOS 或Windows上,可以使用 设置指定来自操作系统的安全证书存储的证书,而不是 PEM
net.tls.certificateSelector密钥文件。certificateKeyFile和net.tls.certificateSelector是互斥的。您只能指定一个。在 Linux/BSD 上,当启用 TLS 时,您必须指定
net.tls.certificateKeyFile。在 Windows 或 macOS 上,当启用 TLS 时,您必须指定
net.tls.certificateKeyFile或net.tls.certificateSelector。重要
仅针对 Windows,MongoDB 不支持加密的 PEM 文件。如果遇到加密的 PEM 文件,则
mongod无法启动。要在 Windows 上安全地存储和访问用于 TLS 的证书,请使用net.tls.certificateSelector。
有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
net.tls.certificateKeyFilePassword类型:字符串
用于解密证书密钥文件的密码(即
certificateKeyFile)。仅当证书密钥文件已加密时才使用net.tls.certificateKeyFilePassword选项。在所有情况下,mongos或mongod会对所有日志记录和报告输出中的密码进行脱敏。在 Linux/BSD 上,如果 PEM 文件中的私钥已加密且您未指定
net.tls.certificateKeyFilePassword选项,则 MongoDB 会提示您输入密码。有关更多信息,请参阅 TLS/SSL 证书密码。
在 macOS 上,如果 PEM 文件中的私钥已加密,则必须明确指定
net.tls.certificateKeyFilePassword选项。或者,您可以使用安全系统存储中的证书(请参阅net.tls.certificateSelector)而不是 PEM 密钥文件,或使用未加密的 PEM 文件。在 Windows 上,MongoDB 不支持加密证书。如果
mongod遇到加密的 PEM 文件,则会失败。请改用net.tls.certificateSelector。有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
net.tls.certificateSelector类型:字符串
指定证书属性,以便从操作系统的证书存储区中选择匹配的证书以用于 TLS/SSL。在 Windows 和 macOS 上可用,以作为
net.tls.certificateKeyFile的替代方案。net.tls.certificateKeyFile和net.tls.certificateSelector选项互斥。您只能指定一个。net.tls.certificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:属性值类型说明subjectASCII 字符串
证书上的主题名称或公用名
thumbprint十六进制字符串
以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。
thumbprint有时称为fingerprint。在使用系统 SSL 证书存储区时,会用 OCSP(在线证书状态协议)来验证证书的吊销状态。
mongod搜索操作系统的安全证书存储区,查找验证指定 TLS 证书的完整证书链所需的 CA 证书。具体来说,安全证书存储区必须包含根 CA 以及构建 TLS 证书的完整证书链所需的任何中间 CA 证书。警告
如果您使用
net.tls.certificateSelector和/或net.tls.clusterCertificateSelector,我们不建议使用net.tls.CAFile或 来指定根和中间 CAnet.tls.clusterFile证书例如,如果 TLS 证书是使用单个根 CA 证书签署的,则安全证书存储区必须包含相应的根 CA 证书。如果 TLS 证书是使用中间 CA 证书签署的,则安全证书存储区必须包含相应的中间 CA 证书和 根 CA 证书。
注意
将
net.tls.certificateSelector或db.rotateCertificates()--tlsCertificateSelector设立为 时,无法使用rotateCertificates命令或 Shell方法thumbprint
net.tls.clusterCertificateSelector类型:字符串
指定证书属性,以便从操作系统的证书存储区中选择匹配的证书以用于内部 X.509 成员身份验证。
在 Windows 和 macOS 上可用,以作为
net.tls.clusterFile的替代方案。net.tls.clusterFile和net.tls.clusterCertificateSelector选项互斥。您只能指定一个。net.tls.clusterCertificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:属性值类型说明subjectASCII 字符串
证书上的主题名称或公用名
thumbprint十六进制字符串
以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。
thumbprint有时称为fingerprint。mongod搜索操作系统的安全证书存储区,查找验证指定集群证书的完整证书链所需的 CA 证书。具体来说,安全证书存储区必须包含根 CA 以及构建集群证书的完整证书链所需的任何中间 CA 证书。警告
如果您使用
net.tls.certificateSelector和/或net.tls.clusterCertificateSelector,我们不建议使用net.tls.CAFile或 来指定根 CA 证书和中间 CAnet.tls.clusterCAFile证书。例如,如果集群证书是使用单个根 CA 证书签署的,则安全证书存储区必须包含该根 CA 证书。如果集群证书是使用中间 CA 证书签署的,则安全证书存储区必须包含中间 CA 证书和根 CA 证书。
如果显示的 x.509 证书在
mongod/mongos主机系统时间后的30天内过期,则mongod/mongos会在连接时记录警告。
net.tls.clusterFile类型:字符串
.pem文件,其中包含用于集群或副本集的成员身份验证的 X.509 证书密钥文件。在 macOS 或 Windows 上,您可以使用
net.tls.clusterCertificateSelector选项从操作系统的安全证书存储区中指定证书,而不是 PEM 密钥文件。net.tls.clusterFile和net.tls.clusterCertificateSelector选项互斥。您只能指定一个。如果
net.tls.clusterFile没有为内部集群身份验证指定.pem文件或备选net.tls.clusterCertificateSelector,则集群将使用certificateKeyFile设置中指定的.pem文件或net.tls.certificateSelector返回的证书。如果使用 X.509身份验证,则必须指定
--tlsCAFile或tls.CAFile,除非使用--tlsCertificateSelector。如果显示的 x.509 证书在
mongod/mongos主机系统时间后的30天内过期,则mongod/mongos会在连接时记录警告。有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
重要
Windows 仅适用,MongoDB 不支持 PEM 加密文件。如果遇到 PEM 加密文件,则
mongod无法启动。要安全存储和访问用于 Windows 成员身份验证的证书,请使用net.tls.clusterCertificateSelector。
net.tls.clusterPassword类型:字符串
用于解密使用
--sslClusterFile指定的 X.509 证书密钥文件的密码。仅在证书密钥文件已加密的情况下使用net.tls.clusterPassword选项。在所有情况下,mongos或mongod都会对所有日志记录和报告输出中的密码进行脱敏。在 Linux/BSD 上,如果 X.509 文件中的私钥已加密且未指定
net.tls.clusterPassword选项,MongoDB 将提示输入密码。有关更多信息,请参阅 ssl-certificate-password。
在 macOS 上,如果 X.509 文件中的私钥已加密,则必须明确指定
net.tls.clusterPassword选项。此外,您可以使用安全系统存储区中的证书(请参阅net.tls.clusterCertificateSelector)而不是集群 PEM 文件,或使用未加密的 PEM 文件。在 Windows 上,MongoDB 不支持加密证书。如果
mongod遇到加密的 PEM 文件,则会失败。使用net.tls.clusterCertificateSelector。有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
net.tls.clusterAuthX5097.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
1.3.6.1.4.1.34601.2.1.2相对应的扩展值。服务器期望集群成员节点在其证书中包含此扩展。这样,您就可以使用不包含DC、O和OU值的证书对集群成员进行身份验证。当您设立
extensionValue时, MongoDB使用证书扩展值匹配证书并忽略标识名 (DN)。创建 OID 为
1.3.6.1.4.1.34601.2.1.2的证书时,请考虑以下准则:保持扩展值低于 128 字节。
使用单个 UTF8 字符串作为扩展的内部值。
mongod不接受其他字符串类型。如果使用 OpenSSL,则必须显式指定 ASN.1 类型,以便对 UTF8 字符串进行编码。 示例:
在命令行,指定
-addext: 1.3.6.1.4.1.34601.2.1.2=ASN1:UTF8String:<your-value>。在 OpenSSL 配置文件中,指定
1.3.6.1.4.1.34601.2.1.2 = ASN1:UTF8String:<your-value>。
警告
如果省略
ASN1:UTF8String:,OpenSSL 可能会选择不同的编码或原始八位字节,而mongod会拒绝并使用“不支持的标签”或“未知 DER”标签。
net.tls.CAFile类型:字符串
.pem文件,其中包含来自证书颁发机构的根证书链。使用相对或绝对路径指定.pem文件的文件名。- 仅限 Windows/macOS
- 如果使用
net.tls.certificateSelector和/或net.tls.clusterCertificateSelector,请勿使用net.tls.CAFile来指定根和中间 CA 证书。将验证net.tls.certificateSelector和/或net.tls.clusterCertificateSelector证书的完整信任链所需的所有 CA 证书存储在安全证书存储区中。
有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 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 证书。将验证net.tls.certificateSelector和/或net.tls.clusterCertificateSelector证书的完整信任链所需的所有 CA 证书存储在安全证书存储区中。
有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
net.tls.CRLFile类型:字符串
包含证书吊销列表的
.pem文件。使用相对或绝对路径指定.pem文件的文件名。注意
在 macOS 上不能指定
net.tls.CRLFile。相反,您可以使用系统 SSL 证书存储区,该存储区使用 OCSP(在线证书状态协议)来验证证书的吊销状态。要使用系统 SSL 证书存储区,请参阅net.tls.certificateSelector。为了检查证书吊销状况,MongoDB 默认
enablesOCSP(在线证书状态协议)作为指定 CRL 文件或使用系统 SSL 证书存储区的替代方法。
有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
net.tls.allowConnectionsWithoutCertificates类型:布尔值
默认:false
如果为
false,则所有客户端都必须提供客户端 TLS 证书。如果为true,则客户端无需提供客户端证书,但mongod或mongos会对 TLS/SSL 连接进行加密。如果客户端提供客户端证书,则无论为
net.tls.allowConnectionsWithoutCertificates、mongos或mongod设定什么值, 或 都会使用CAFile指定的根证书链或系统 CA 存储库(如果tlsUseSystemCA为true)执行证书验证,并拒绝证书无效的客户端。如果您的混合部署包含不向或不能向
mongos或mongod提供证书的客户端,请使用net.tls.allowConnectionsWithoutCertificates选项。有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
net.tls.allowInvalidCertificates类型:布尔值
默认:false
启用或禁用集群中其他服务器上的 TLS 证书的验证检查,并允许使用无效证书进行连接。
注意
如果您在使用 X.509 身份验证时指定
--tlsAllowInvalidCertificates或tls.allowInvalidCertificates: true,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。使用
net.tls.allowInvalidCertificates设置时,MongoDB 会记录有关使用无效证书的警告。有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 自管理内部/成员身份验证。
net.tls.allowInvalidHostnames类型:布尔值
默认:false
当
net.tls.allowInvalidHostnames为true时,MongoDB 将禁用 TLS 证书中的主机名验证。这允许mongod或mongos连接到集群中的其他 MongoDB 实例,即使其证书的主机名与指定的主机名不匹配也是如此。有关 TLS 和 MongoDB 的更多信息,请参阅 configure-mongod-mongos-for-tls-ssl。
net.tls.disabledProtocols类型:字符串
防止使用 TLS 运行的 MongoDB Server 接受使用特定协议的传入连接。要指定多个协议,请使用逗号分隔的协议列表,但不要在逗号后使用空格。如果在协议名称前包含空格,服务器会将其解释为无法识别的协议并且不会启动。
net.tls.disabledProtocols可识别以下协议:TLS1_0、TLS1_1、TLS1_2和TLS1_3。在 macOS 上,您无法在禁用
TLS1_1的情况下,让TLS1_0和TLS1_2同时启用。您必须至少禁用后两者中的一个,比如TLS1_0,TLS1_1。若要列出多个协议,请指定为逗号分隔的协议列表,逗号后不带空格。例如
TLS1_0,TLS1_1。指定无法识别的协议或在逗号后包含空格,将会阻止服务器启动。
指定的禁用协议将覆盖任何默认禁用的协议。
如果系统上可用 TLS 1.1+,MongoDB 将禁用 TLS 1.0。要启用 TLS 1.0,请将
none指定为net.tls.disabledProtocols。副本集和分片集群的成员必须至少使用一个共同协议。
提示
net.tls.FIPSMode类型:布尔值
默认:false
启用或禁用
mongos或mongod的 TLS 库的 FIPS 模式。您的系统必须有符合 FIPS 标准的库,才能使用net.tls.FIPSMode选项。注意
与 FIPS 兼容的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参阅为 FIPS 配置MongoDB 。
net.compression 选项
net: compression: compressors: <string>
net.compression.compressorsDefault: snappy,zstd,zlib
指定默认压缩程序用于此
mongod或mongos实例与以下对象之间的通信:部署的其他成员(如果实例是副本集或分片集群的一部分)
支持
OP_COMPRESSED消息格式的驱动程序。
MongoDB 支持以下压缩程序:
要禁用网络压缩,请将值设置为
disabled。重要
当双方都启用网络压缩时,消息就会被压缩。否则,各方之间的消息不会被压缩。
如果指定多个压缩程序,则列出压缩程序的顺序以及通信发起者都很重要。示例,如果
mongosh指定以下网络压缩程序 ,并且zlib,snappy指定mongod,则snappy,zlibmongosh和 之间的消息使用mongodzlib。如果各方未分享至少一个通用压缩程序,则各方之间的消息将不会被压缩。示例,如果
mongosh指定网络压缩程序zlib且mongod指定snappy,则mongosh与mongod之间的消息将不会被压缩。
security 选项
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实例用于在分片集群或副本集相互验证的共享密钥。
keyFilesecurity.authorization意味着 。有关更多信息,请参阅自管理内部/成员身份验证。用于内部成员身份验证的密钥文件使用 YAML 格式,允许在密钥文件中包含多个密钥。YAML 格式接受以下任一形式:
单个密钥字符串(与早期版本相同)
键字符串序列
YAML 格式与使用文本文件格式的现有单密钥文件兼容。
security.clusterAuthMode类型:字符串
默认:keyFile
集群身份验证时使用的身份验证方式。如果使用内部 X.509 身份验证,请在此处指定。此选项可为以下值之一:
值说明keyFile使用密钥文件进行身份验证。仅接受密钥文件。
sendKeyFile用于滚动升级目的。发送密钥文件进行身份验证,但可以同时接受密钥文件和 X.509 证书。
sendX509用于滚动升级目的。发送 X.509 证书进行身份验证,但可以同时接受密钥文件和 X.509 证书。
x509推荐。发送 X.509 证书进行身份验证,仅接受 X.509 证书。
如果未指定
--tlsCAFile或tls.CAFile且您未使用 X.509 身份验证,则必须将tlsUseSystemCA参数设置为true。这使得 MongoDB 在连接到启用 TLS 的服务器时使用系统范围的 CA 证书存储区。如果使用 X.509身份验证,则必须指定
--tlsCAFile或tls.CAFile,除非使用--tlsCertificateSelector。有关 TLS 和 MongoDB 的更多信息,请参阅 为 TLS/SSL 加密配置 MongoDB 实例 和 客户端的 TLS/SSL 配置 。
security.authorization类型:字符串
默认值:已禁用
启用或禁用基于角色的访问控制(RBAC)以管理每个用户对数据库资源和操作的访问。
将此选项设为以下之一:
值说明enabled用户只能访问已获得授权的数据库资源和操作。
disabled用户可以访问任何数据库并执行任何操作。
有关更多信息,请参阅自管理部署中的基于角色的访问控制。
security.authorization设置仅适用于mongod。
security.transitionToAuth类型:布尔值
默认:false
允许
mongod或mongos接受和创建与部署中其他mongod和mongos实例之间的经过身份验证和未经身份验证的连接。用于对副本集或分片集群执行从无身份验证配置到内部身份验证的滚动过渡。需要指定内部身份验证机制,例如security.keyFile。示例,如果使用密钥文件进行内部身份验证,则
mongod或mongos会使用匹配的密钥文件与部署中的任何mongod或mongos创建经身份验证的连接。如果安全机制不匹配,则mongod或mongos将改用未经身份验的连接。使用
security.transitionToAuth运行的mongod或mongos不会强制实施用户访问控制。用户无需任何访问控制检查即可连接到您的部署并执行读取、写入和管理操作。注意
使用内部身份验证运行且不使用
security.transitionToAuth的mongod或mongos要求客户端使用用户访问控制进行连接。更新客户端以使用适当的 用户 连接到mongod或mongos,在不使用security.transitionToAuth的情况下重启mongod或mongos之前。
security.javascriptEnabled类型:布尔值
默认值:true
重要
服务器端 JavaScript 已弃用
从MongoDB 8.0开始,服务器端JavaScript函数(
$accumulator、$function、$where)已弃用。 运行这些函数时, MongoDB会记录警告。从 MongoDB 5.0 开始,Map-reduce 已被弃用。
启用或禁用服务器端 JavaScript 执行。禁用后,您便无法使用可在服务器端执行 JavaScript 代码的操作,如
$where查询运算符、mapReduce命令、$accumulator和$function。如果不使用这些操作,请禁用服务器端脚本。
security.javascriptEnabled可用于mongod和mongos。在早期版本中,该设置仅适用于mongod。
security.redactClientLogData类型:布尔值
仅在 MongoDB Enterprise 中可用。
使用
security.redactClientLogData运行的mongod或mongos会在登录之前编辑与给定日志事件相关的任何消息。这可防止mongod或mongos将数据库中存储的潜在敏感数据写入诊断日志。错误或操作代码、行号和源文件名称等元数据在日志中仍然可见。将
security.redactClientLogData与 静态加密 和 TLS/SSL(传输加密) 结合使用,以协助合规监管要求。示例,MongoDB 部署可能会将个人身份信息 (PII) 存储在一个或多个集合中。
mongod或mongos日志事件,例如与 CRUD 操作、分片元数据等相关的事件。mongod或mongos可能会将 PII 作为这些日志记录操作的一部分。通过security.redactClientLogData运行的mongod或mongos会在输出到日志之前删除与这些事件相关的任何消息,从而有效地删除了 PII。由于缺少与日志事件相关的数据,对使用
security.redactClientLogData运行的mongod或mongos进行诊断可能会更困难。有关security.redactClientLogData对日志输出影响的示例,请参阅进程日志记录手册页面。在运行的
mongod或mongos上,使用带有 参数的setParameterredactClientLogData来配置此设置。
security.clusterIpSourceAllowlist类型:列表
版本 5.0 中的新增功能。
在版本5.2中进行了更改。
IP地址/CIDR(无类域间路由)范围列表, 根据这些地址/CIDR
mongod范围验证来自副本集其他成员以及mongos实例(如果属于分片集群)的身份验证请求。mongod验证源IP是否明确位于列表中或属于列表中的 CIDR范围。如果IP解决不存在,则服务器不对mongod或mongos进行身份验证。security.clusterIpSourceAllowlist对未经身份验证启动的mongod没有影响。从 MongoDB 5.2 开始,可以使用
setParameter在正在运行的mongod或mongos上配置security.clusterIpSourceAllowlist。此示例在运行时更新
security.clusterIpSourceAllowlist,以包括 IP 地址"1.1.1.1/24"、"2.2.2.2/16"和"3.3.3.3"。db.adminCommand( { setParameter: 1, "clusterIpSourceAllowlist": ["1.1.1.1/24", "2.2.2.2/16", "3.3.3.3"] } ); 此示例在运行时更新
security.clusterIpSourceAllowlist以排除所有 IP 地址:db.adminCommand( { setParameter: 1, "clusterIpSourceAllowlist": null } ); 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: enableEncryption: <boolean> encryptionCipherMode: <string> encryptionKeyFile: <string> kmip: keyIdentifier: <string> rotateMasterKey: <boolean> serverName: <string> port: <int> clientCertificateFile: <string> clientCertificatePassword: <string> clientCertificateSelector: <string> serverCAFile: <string> connectRetries: <int> connectTimeoutMS: <int> activateKeys: <boolean> keyStatePollingSeconds: <int> useLegacyProtocol: <boolean>
security.enableEncryption类型:布尔值
默认:false
对 WiredTiger 存储引擎启用加密。必须设置为
true,才能传递加密密钥和配置。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
security.encryptionCipherMode类型:字符串
默认值:
AES256-CBC用于静态加密的密码模式:
模式说明AES256-CBC采用密码分组链接模式的 256 位高级加密标准
AES256-GCM采用 Galois/Counter 模式的 256 位高级加密标准
仅在 Linux 上可用。
Windows 上的 MongoDB Enterprise 不再支持将
AES256-GCM作为静态加密的分组密码算法。仅 Linux 版本支持此用法。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
security.encryptionKeyFile类型:字符串
通过 KMIP 以外的进程管理密钥时,本地密钥文件的路径。仅在通过 KMIP 以外的进程管理密钥时设置。如果已使用 KMIP 加密数据,则 MongoDB 会抛出错误。
要求
security.enableEncryption为true。注意
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 服务器的连接。security.kmip.serverName中指定的服务器名称必须与SANCNKMIP服务器出示的证书上的主题备用名称 或公用名SAN相匹配。 可以是系统名称或IP解决。如果存在
SAN,则mongod不会尝试与CN配对。如果 KMIP 服务器的主机名或 IP 地址与
SAN和CN都不匹配,则mongod不会启动。从 MongoDB 4.2 开始,在比较 SAN 时,MongoDB 可以比较 DNS 名称或 IP 地址。在之前的版本中,MongoDB 仅能比较 DNS 名称。
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
security.kmip.port类型:int
默认:5696
用于与 KMIP服务器通信的端口号。需要 。要求
security.kmip.serverNamesecurity.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设置。重要
使用
security.kmip.clientCertificateFile且 KMIP 服务器强制执行 TLS 1.2时,在 Windows 上使用 KMIP 服务器启用加密会失败。要在 Windows 上使用 KMIP 启用静态加密,您必须:
将客户端证书导入 Windows 证书存储区。
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
security.kmip.clientCertificatePassword类型:字符串
用于解密连接到 KMIP服务器的客户端证书的私钥的密码。 此选项向 KMIP服务器对MongoDB进行身份验证,并要求您提供
--kmipClientCertificateFile。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
security.kmip.clientCertificateSelector类型:字符串
5.0 版本新增:
可在Windows和 macOS 上作为
security.kmip.clientCertificateFile的替代方案。security.kmip.clientCertificateFile和security.kmip.clientCertificateSelector选项互斥。您只能指定一个。指定证书属性,以便从操作系统的证书存储区中选择匹配的证书来在 KMIP 服务器上对 MongoDB 进行身份验证。
security.kmip.clientCertificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:属性值类型说明subjectASCII 字符串
证书上的主题名称或公用名
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.activateKeys为true,并且您在 KMIP 服务器上有现有密钥,则必须首先激活该密钥,否则mongod节点将无法启动。如果mongod使用的密钥转换为非活动状态,则
mongod节点将关闭,除非kmipActivateKeys为 false。为确保您拥有有效的密钥,请使用 轮换 KMIPsecurity.kmip.rotateMasterKey主密钥。
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 选项
security: sasl: hostName: <string> serviceName: <string> saslauthdSocketPath: <string>
security.sasl.serviceName类型:字符串
使用 SASL 的服务的注册名称。此选项允许您按实例替换 Kerberos 主体名称的默认 Kerberos 服务名称组件。如果未指定,则默认值为
mongodb。MongoDB 仅允许在启动时设置此选项。
setParameter无法更改此设置。此选项仅在 MongoDB Enterprise 中可用。
重要
确保驾驶员支持备用服务名称。对于连接到新 的
mongosh和其他MongoDB工具,请参阅serviceNamegssapiServiceName选项。
security.ldap 选项
注意
从MongoDB 8.0开始, LDAP身份验证和授权已弃用。 LDAP可用并将在MongoDB 8的整个生命周期内继续运行而不进行更改。 LDAP将在未来的主要发布中删除。
有关详细信息,请参阅 LDAP 弃用。
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 服务器,
mongod或mongos在该服务器上对用户进行身份验证或决定授权用户可对给定数据库执行哪些操作。如果指定的 LDAP 服务器有任何复制的实例,则可以在逗号分隔的列表中指定每个复制的服务器的主机和端口。如果您的LDAP基础架构将LDAP目录分区到多个LDAP服务器,请将一个LDAP服务器或其任何复制实例指定为
security.ldap.servers。 MongoDB支持以下LDAP引用,如 RFC..45114 110security.ldap.servers中所定义。请勿使用 列出基础架构中的每台LDAP服务器。您可以为 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 记录查询。可以使用
setParameter在运行的mongod或mongos上配置此设置。如果未设置,
mongod或mongos将无法使用LDAP 身份验证或授权。
security.ldap.bind.queryUser类型:字符串
仅在 MongoDB Enterprise 中可用。
mongod或mongos连接到 LDAP 服务器或在其上执行查询时绑定的身份。仅当满足以下任一条件时才需要:
使用 LDAP 授权。
使用LDAP查询
security.ldap.userToDNMapping。LDAP 服务器不允许匿名绑定
您必须将
queryUser与queryPassword一起使用。如果未设置,则
mongod或mongos不会尝试绑定到 LDAP 服务器。可使用
setParameter在运行中的mongod或mongos上配置此设置。注意
Windows MongoDB部署可以使用
useOSDefaults代替queryUser和queryPassword。您不能同时指定queryUser和useOSDefaults。
security.ldap.bind.queryPassword类型:字符串或数组
仅在 MongoDB Enterprise 中可用。
使用
queryUserqueryPassword时用于绑定到LDAP服务器的密码。您必须将 与queryUser一起使用。如果未设置,则
mongod或mongos不会尝试绑定到 LDAP 服务器。可以使用
setParameter在运行中的mongod或mongos上配置此设置。ldapQueryPasswordsetParameter命令接受 string 或 string 数组。如果将ldapQueryPassword设置为数组,则 MongoDB 会按顺序尝试每个密码,直到成功为止。使用密码数组可以在不停机的情况下滚动 LDAP 账户密码。注意
Windows MongoDB部署可以使用
useOSDefaults代替queryUser和queryPassword。您不能同时指定queryPassword和useOSDefaults。
security.ldap.bind.useOSDefaults类型:布尔值
默认:false
仅在 Windows 平台上的 MongoDB Enterprise 中可用。
允许
mongod或mongos在连接 LDAP 服务器时使用 Windows 登录凭证进行身份验证或绑定。仅在以下情况下才需要:
使用 LDAP 授权。
将 LDAP 查询用于
username transformation。LDAP 服务器不允许匿名绑定
使用
useOSDefaults替换queryUser和queryPassword。
security.ldap.bind.method类型:字符串
默认值:简单
仅在 MongoDB Enterprise 中可用。
方法
mongod或mongos用于对 LDAP 服务器进行身份验证。与queryUser和queryPassword一起使用以连接到 LDAP 服务器。method支持以下值:simple-mongod或mongos使用简单身份验证。sasl-mongod或mongos使用 SASL 协议进行身份验证
如果指定
sasl,则可以使用 配置可用的 SASLsecurity.ldap.bind.saslMechanismsmongodmongosDIGEST-MD5机制。 或 默认为使用 机制。
security.ldap.bind.saslMechanisms类型:字符串
默认值:DIGEST-MD5
仅在 MongoDB Enterprise 中可用。
以逗号分隔的 SASL 机制列表,
mongod或mongos可以在向 LDAP 服务器进行身份验证时使用。mongod或mongos和 LDAP 服务器必须就至少一种机制达成一致。mongod或mongos可在运行时动态加载托管机器上安装的任何 SASL 机制库。在
mongod或mongos托管以及远程 LDAP 服务器托管上安装和配置所选 SASL 机制的相应库。默认情况下,操作系统可能包含某些 SASL 库。请参阅与每个 SASL 机制相关的文档以获取安装和配置指导。如果将
GSSAPISASL 机制与 自管理部署上的 Kerberos 身份验证结合使用,请验证mongod或mongos托管的以下内容:LinuxKRB5_CLIENT_KTNAME环境变量会解析为主机客户端 Linux Keytab 文件的名称。有关 Kerberos 环境变量的更多信息,请参阅 Kerberos 文档。客户端密钥表包含了供
mongod或mongos连接到 LDAP 服务器并执行 LDAP 查询时使用的 用户主体。
Windows- 如果连接到 Active Directory服务器,则当用户登录系统时, Windows Kerberos配置会自动生成票证授予票证。将
useOSDefaults设置为true,以允许mongod或mongos在连接到 Active Directory服务器并执行查询时使用生成的凭证。
将
method设置为sasl以使用此选项。注意
有关 SASL 机制的完整列表,请参阅 IANA 列表。请参阅LDAP或 Active Directory 服务的文档来识别与该服务兼容的 SASL 机制。
MongoDB 不是 SASL 机制库的来源,MongoDB 文档也不是安装或配置任何给定 SASL 机制的权威来源。如需获得文档和支持,请咨询 SASL 机制库供应商或所有者。
有关 SASL 的更多信息,请参阅以下资源:
对于 Linux,请参阅 Cyrus SASL 文档。
对于 Windows,请参阅 Windows SASL 文档。
security.ldap.transportSecurity类型:字符串
默认值:tls
仅在 MongoDB Enterprise 中可用。
默认情况下,
mongod或mongos会创建与 LDAP 服务器的 TLS/SSL 安全连接。对于 Linux 部署,必须在
/etc/openldap/ldap.conf文件中配置相应的 TLS 选项。操作系统的程序包管理器通过libldap依赖项创建此文件作为 MongoDB Enterprise 安装的一部分。有关更完整的说明,请参阅 ldap.conf OpenLDAP 文档 中的 。TLS Options在 Windows 上部署时,必须将 LDAP 服务器 CA 证书添加到 Windows 证书管理工具中。该工具的确切名称和功能可能会因操作系统版本而异。有关证书管理的更多信息,请参阅您的 Windows 版本对应的文档。
将
transportSecurity设置为none,以禁用mongod或mongos与 LDAP 服务器之间的 TLS/SSL。警告
将
transportSecurity设置为none,可在mongod或mongos和 LDAP 服务器之间传输明文信息,可能还传输凭证。
security.ldap.timeoutMS类型:int
默认值:10000
仅在 MongoDB Enterprise 中可用。
mongod或mongos应等待 LDAP 服务器响应请求的时间,以毫秒为单位。如果失败的根源是连接超时,增加
timeoutMS的值可以防止 MongoDB 服务器和 LDAP 服务器之间的连接失败。降低timeoutMS的值会缩短 MongoDB 等待 LDAP 服务器响应的时间。可使用
setParameter在运行中的mongod或mongos上配置此设置。
security.ldap.retryCount6.1版本新增。
类型:int
默认值:0
仅在 MongoDB Enterprise 中可用。
在出现网络错误后服务器 LDAP 管理器重试的操作数。
可使用
setParameter在运行中的mongod或mongos上配置此设置。
security.ldap.userToDNMapping类型:字符串
仅在 MongoDB Enterprise 中可用。
将提供的用户名映射到
mongod或mongos进行身份验证,以获取 LDAP 标识名 (标识名)。在以下情况下,可能需要使用userToDNMapping将用户名转换为 LDAP 标识名:通过 LDAP 简单绑定进行 LDAP 身份验证,其中用户使用非完整 LDAP DN 的用户名向 MongoDB 进行身份验证。
使用需要 DN 的
LDAP authorization query template。将使用不同身份验证机制(如 x.509、kerberos)向 Mongo DB 进行身份验证的客户端的用户名转换为完整的 LDAP DN,以进行授权。
userToDNMapping需要一个用引号括住的 JSON 字符串,代表有序的文档数组。每个文档都包含一个正则表达式match以及用于转换传入用户名的substitution或ldapQuery模板。数组中的每个文档均采用以下形式:
{ match: "<regex>" substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>" } 字段说明例子matchECMAScript 格式的正则表达式 (regex),用于与提供的用户名进行匹配。每个括号括起来的部分表示
substitution或ldapQuery使用的正则表达式捕获组。"(.+)ENGINEERING""(.+)DBA"substitutionLDAP标识名(DN) 格式模板,用于将
match正则表达式匹配的身份验证名称转换为LDAP DN。每个大括号括起来的数值都替换为通过match正则表达式从身份验证用户名中提取的相应正则表达式捕获群组。替换结果必须是 RFC4514 转义字符串。
"cn={0},ou=engineering, dc=example,dc=com"ldapQuery"ou=engineering,dc=example, dc=com??one?(user={0})"对于数组中的每个文档,必须使用
substitution或ldapQuery。不能在同一文档中同时指定两者。执行身份验证或授权时,
mongod或mongos会按给定顺序遍历数组中的每个文档,对照match过滤器检查身份验证用户名。如果找到匹配,mongod或mongos就会应用转换,并使用输出结果对用户进行身份验证。mongod或mongos不会检查数组中的其余文档。如果给定文档与提供的身份验证名称不匹配,
mongod或mongos会继续通过文档列表查找其他匹配项。如果在任何文档中均未找到匹配项,或文档描述的转换失败,mongod或mongos将返回错误。mongod或mongos也会返回错误(如果由于网络或对 LDAP 服务器的身份验证失败而无法评估某项转换)。mongod或mongos会拒绝连接请求,不检查数组中的其余文档。从 MongoDB 5.0 开始,
userToDNMapping接受空 string""或空数组[ ]代替映射文档。如果向userToDNMapping提供空 string 或空数组,MongoDB 会将经过身份验证的用户名映射为 LDAP 标识名。以前,提供空映射文档会导致映射失败。重要
必须将数组作为 string 传递给
userToDNMapping。例子
下面展示了两个转换文档。第一个文档匹配以
@ENGINEERING结尾的任何字符串,将后缀前面的所有内容放入正则表达式捕获组中。第二个文档匹配以@DBA结尾的任何字符串,将后缀前面的所有内容放入正则表达式捕获组中。"[ { 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}对应于 stringbob。生成的输出是 LDAP 查询"ou=dba,dc=example,dc=com??one?(user=bob)"。mongod或mongos针对 LDAP 服务器执行此查询,并返回结果"cn=bob,ou=dba,dc=example,dc=com"。如果未设置
userToDNMapping,则在尝试通过 LDAP 服务器对用户进行身份验证或授权时,mongod或mongos不应用任何转换到用户名。可以在运行中的
mongod或mongos上使用setParameter数据库命令配置此设置。
security.ldap.authz.queryTemplate类型:字符串
仅在 MongoDB Enterprise 中可用。
格式符合 RFC4515 和 RFC4516 的相对LDAP查询URL,
mongod执行该 URL 以获得经过身份验证的用户所属的LDAP群组。该查询是相对于security.ldap.servers中指定的一托管或多台主机的。注意
为了获得更好的性能,可以考虑将用于 MongoDB 授权的 LDAP 群组放入各自的组织单位 (
OU)。在 URL 中,可以使用以下替换令牌:
替换令牌说明{USER}使用经过身份验证的用户名进行替换,或者,如果指定了
userToDNMapping,则使用transformed用户名进行替换。{PROVIDED_USER}在 LDAP 查询中替换为提供的用户名(即在身份验证或 LDAP 转换之前)。
构造查询 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。虽然您可以使用
setParameter数据库命令在运行的mongod上修改ldapAuthzQueryTemplate参数的值,但您无法在运行时启用或禁用它。要启用此设置,您必须在初创企业期间的配置文件中配置security.ldap.authz.queryTemplate。
setParameter 选项
setParameter设置自管理部署的 MongoDB 服务器参数中描述的一个或多个 MongoDB 参数
要在 YAML 配置文件中设置参数,请使用以下格式:
setParameter: <parameter1>: <value1> <parameter2>: <value2> 例如,在配置文件中指定
enableLocalhostAuthBypass:setParameter: enableLocalhostAuthBypass: false
setParameter LDAP选项
setParameter.ldapUserCacheInvalidationInterval类型:int
默认值:30
用于与使用自管理部署上的 LDAP 授权的
mongod服务器一起使用。mongod在外部用户缓存刷新之间的等待间隔(以秒为单位)。MongoDB 在刷新外部用户缓存mongod次后,下次 LDAP 授权用户发出操作时,MongoDB 会从 LDAP 服务器重新获取授权数据。增加指定的值会增加
mongod和 LDAP 服务器可以失去同步的时间,但会减少 LDAP 服务器的负载。相反,减少指定的值会减少mongod和 LDAP 服务器可以失去同步的时间,同时会增加 LDAP 服务器的负载。
setParameter: ldapUserCacheInvalidationInterval: <int>
setParameter MongoDB搜索选项
setParameter.searchIndexManagementHostAndPort类型:字符串
默认值:""
搜索索引管理托管解决。此参数指定搜索索引管理服务器的主机名或IP解决和端口。
注意
此参数的值必须与
setParameter.mongotHost相同。
setParameter: searchIndexManagementHostAndPort: <hostname|IP:port>
例子
setParameter: searchIndexManagementHostAndPort: localhost:27028
setParameter.skipAuthenticationToSearchIndexManagementServer类型:布尔值
默认:false
确定是否跳过服务器到索引管理服务器连接的
mongod身份验证的标志,即使在mongod上启用了身份验证。注意
出于安全考虑,我们建议将此参数设置为
false。
setParameter: skipAuthenticationToSearchIndexManagementServer: <true|false>
setParameter: mongotHost: <hostname|IP:port>
例子
setParameter: mongotHost: localhost:27028
setParameter.skipAuthenticationToMongot类型:布尔值
默认:false
指定MongoDB是否跳过
mongod到mongot连接的身份验证,即使在mongod上启用了身份验证。注意
出于安全考虑,我们建议保持此参数不设置或设置为
false。
setParameter: skipAuthenticationToMongot: <true|false>
setParameter.useGrpcForSearch类型:布尔值
默认:false
指定分片是否应使用 gRPC 与
mongot通信。注意
如果使用
mongot,则必须将此参数设立为true。
setParameter: useGrpcForSearch: <true|false>
setParameter.searchTLSMode类型:字符串
默认值:
globalTLS为
mongod到mongot连接设置 TLS模式。设置globalTLS值会使用您在net.tls.mode中指定的设置,而其他设置则根据其通常行为运行。您可以为此参数使用以下值:
globalTLSdisabledallowTLSpreferTLSrequireTLS
setParameter: searchTLSMode: <globalTLS|disabled|allowTLS|preferTLS|requireTLS>
storage 选项
在版本 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.dbPathRHEL / CentOS 和 Amazon
yum/var/lib/mongoSUSE
zypper/var/lib/mongoUbuntu 和 Debian
apt/var/lib/mongodbmacOS
brew/usr/local/var/mongodbLinux 包初始化脚本并不希望
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选项:对于独立运行的实例:
在现有 实例上使用
mongodumpmongod生成备份。停止
mongod实例。添加
storage.directoryPerDB值并配置新的数据目录重新启动
mongod实例。使用
mongorestore填充新的数据目录。
对于副本集:
停止从节点成员。
添加
storage.directoryPerDB值,并为该从节点(secondary node from replica set)配置新的数据目录。重启该从节点。
使用初始同步填充新数据目录。
以同样的方式更新剩下的从节点。
降级主节点,并以相同的方式更新降级的成员。
storage.syncPeriodSecs类型:数字
默认:60
MongoDB 将数据刷新到数据文件之前可以经过的时间量。
请勿对生产系统设置此值。几乎在所有情况下,均应使用默认设置。
mongod进程会非常快速地将数据写入日志,并延迟写入数据文件。storage.syncPeriodSecs对日志记录没有影响,但如果将storage.syncPeriodSecs设置为0,则日志最终会占用所有可用的磁盘空间。storage.syncPeriodSecs设置仅适用于mongod。不适用于使用
mongod内存存储引擎的实例。为了提供持久性数据,WiredTiger 使用了检查点。 有关详细信息,请参阅《日志和 WiredTiger 存储引擎》。
storage.engine默认值:
wiredTigermongod数据库的存储引擎。可用值包括:值说明wiredTiger指定 WiredTiger 存储引擎。
inMemory仅在 MongoDB Enterprise 中可用。
如果您尝试使用包含由与
storage.engine指定的存储引擎不同的存储引擎生成的数据文件的storage.dbPath启动mongod,则mongod拒绝启动。
storage.oplogMinRetentionHours类型:double
指定保留 oplog 条目的最小小时数,其中十进制值表示小时的小数部分。例如,值
1.5表示一小时三十分钟。该值不得小于
0。值0表示mongod应从最旧的条目开始截断 oplog,以维持配置的 oplog 最大大小。默认值为
0。仅在以下情况下,使用
oplogMinRetentionHours启动的mongod会删除 oplog 条目:oplog 已达到配置的 oplog 最大大小,并且
oplog 条目早于根据主机系统时钟配置的小时数。
在配置了最短 oplog 保留期后,
mongod有以下行为:oplog 的大小可以不受限制地增长,以便在配置的小时数内保留 oplog 条目。由于写入量高且保留期长,这可能会导致系统磁盘空间减少或耗尽。
如果 oplog 的大小超过其最大大小,则即使 oplog 变回其最大大小或配置为较小的最大大小,
mongod仍可能会继续保留该磁盘空间。请参阅减小 oplog 大小不会立即收回磁盘空间。
要在启动
mongod后更改 oplog 的最短保留期,请使用replSetResizeOplog。使用replSetResizeOplog,可以动态调整 oplog 的大小,而无需重新启动mongod进程。若要通过重启来保留使用replSetResizeOplog所做的更改,请更新oplogMinRetentionHours的值。
storage.wiredTiger 选项
storage: wiredTiger: engineConfig: cacheSizeGB: <number> cacheSizePct: <number> journalCompressor: <string> directoryForIndexes: <boolean> maxCacheOverflowFileSizeGB: <number> collectionConfig: blockCompressor: <string> indexConfig: prefixCompression: <boolean>
storage.wiredTiger.engineConfig.cacheSizeGB类型:浮点
定义WiredTiger用于所有数据的内部缓存的最大大小。索引构建消耗的内存(请参阅
maxIndexBuildMemoryUsageMegabytes)与WiredTiger缓存内存是分开的。避免将WiredTiger内部缓存大小增加到超过其默认值。如果您的使用案例需要这样做,您可以使用
storage.wiredTiger.engineConfig.cacheSizePct来指定最多占可用内存的80 %。值的范围可以从.0 256GB到10000 GB之间。缓存配置设置
默认 WiredTiger 内部缓存大小为以下两者中的较大者:
50% 的 (RAM - 1 GB),或
0.256 GB.
示例,在总RAM为 4 GB的系统上, WiredTiger缓存使用 1.5 GB RAM (
0.5 * (4GB - 1GB) = 1.5 GB)。提供特定缓存大小时,请确保RAM不超过 0.256 GB到 10000 GB的范围。避免将WiredTiger内部缓存大小增加到超过其默认值。如果您的案例需要这样做,您可以使用
--wiredTigerCacheSizePct来考虑垂直方向导致的内存变化。您必须指定最大为可用内存的 80% 的百分比。计算值的范围可以从 0.256 GB到 10000 GB。示例,在RAM为 2 GB的系统上,--wiredTigerCacheSizePct无法设立为 10,因为 10% of 2 GB是 0。2GB,小于 0.256 GB。注意
在某些实例中,例如在配置为使用的RAM小于为托管预配的内存量的容器中运行时,您必须考虑这些限制。您可能需要将WiredTiger缓存配置为适当的值,因为在某些情况下, WiredTiger可能不考虑特定容器的内存限制。
要查看
memory limit,WiredTiger用作最大可用RAM量的值,请使用hostInfo命令。借助 WiredTiger,MongoDB 可同时利用 WiredTiger 内部缓存和文件系统缓存。
借助文件系统缓存,MongoDB 会自动使用 WiredTiger 缓存或其他进程未使用的所有空闲内存。
注意
storage.wiredTiger.engineConfig.cacheSizeGB限制WiredTiger内部缓存的大小。操作系统使用可用的空闲内存进行文件系统缓存,这允许压缩的MongoDB数据文件保留在内存中。此外,操作系统还使用任何空闲RAM来缓冲文件系统区块和文件系统缓存。为了容纳额外的 RAM 用户,您可能必须减少 WiredTiger 的内部缓存大小。
默认WiredTiger内部缓存大小值假定每台计算机有一个
mongod实例。如果一台计算机包含多个MongoDB实例,请减少该设置以容纳其他mongod实例。mongod如果在容器(示例lxc、cgroups、 Docker等)中运行 ,而该容器无法访问权限系统中的所有可用RAM ,则必须设立storage.wiredTiger.engineConfig.cacheSizeGB或storage.wiredTiger.engineConfig.cacheSizePct为一个小于容器中可用RAM数量的值。确切的数量取决于容器中运行的其他进程。请参阅memLimitMB。您只能提供
storage.wiredTiger.engineConfig.cacheSizeGB或storage.wiredTiger.engineConfig.cacheSizePct之一。
storage.wiredTiger.engineConfig.cacheSizePct类型:浮点
定义分配给缓存的最大内存量,作为物理 RAM 的百分比。索引构建消耗的内存(请参阅
maxIndexBuildMemoryUsageMegabytes)与 WiredTiger 缓存内存是分开的。您可以指定最多占可用内存的 80%。取值范围为
0.25GB到10000GB。缓存配置设置
默认 WiredTiger 内部缓存大小为以下两者中的较大者:
50% 的 (RAM - 1 GB),或
0.256 GB.
示例,在总RAM为 4 GB的系统上, WiredTiger缓存使用 1.5 GB RAM (
0.5 * (4GB - 1GB) = 1.5 GB)。提供特定缓存大小时,请确保RAM不超过 0.256 GB到 10000 GB的范围。避免将WiredTiger内部缓存大小增加到超过其默认值。如果您的案例需要这样做,您可以使用
--wiredTigerCacheSizePct来考虑垂直方向导致的内存变化。您必须指定最大为可用内存的 80% 的百分比。计算值的范围可以从 0.256 GB到 10000 GB。示例,在RAM为 2 GB的系统上,--wiredTigerCacheSizePct无法设立为 10,因为 10% of 2 GB是 0。2GB,小于 0.256 GB。注意
在某些实例中,例如在配置为使用的RAM小于为托管预配的内存量的容器中运行时,您必须考虑这些限制。您可能需要将WiredTiger缓存配置为适当的值,因为在某些情况下, WiredTiger可能不考虑特定容器的内存限制。
要查看
memory limit,WiredTiger用作最大可用RAM量的值,请使用hostInfo命令。借助 WiredTiger,MongoDB 可同时利用 WiredTiger 内部缓存和文件系统缓存。
借助文件系统缓存,MongoDB 会自动使用 WiredTiger 缓存或其他进程未使用的所有空闲内存。
注意
storage.wiredTiger.engineConfig.cacheSizePct限制WiredTiger内部缓存的大小。操作系统使用可用的空闲内存进行文件系统缓存,这允许压缩的MongoDB数据文件保留在内存中。此外,操作系统还使用任何空闲RAM来缓冲文件系统区块和文件系统缓存。为了容纳额外的 RAM 用户,您可能必须减少 WiredTiger 的内部缓存大小。
默认WiredTiger内部缓存大小值假定每台计算机有一个
mongod实例。如果一台计算机包含多个MongoDB实例,请减少该设置以容纳其他mongod实例。mongod如果在容器(示例lxc、cgroups、 Docker等)中运行 ,而该容器无法访问权限系统中的所有可用RAM ,则必须设立storage.wiredTiger.engineConfig.cacheSizePct或storage.wiredTiger.engineConfig.cacheSizeGB为一个小于容器中可用RAM数量的值。确切的数量取决于容器中运行的其他进程。请参阅memLimitMB。您只能提供
storage.wiredTiger.engineConfig.cacheSizePct或storage.wiredTiger.engineConfig.cacheSizeGB之一。
storage.wiredTiger.engineConfig.journalCompressor默认值:snappy
指定用于压缩 WiredTiger 日志数据的压缩类型。
可用的压缩类型有:
none
storage.wiredTiger.engineConfig.directoryForIndexes类型:布尔值
默认:false
当
storage.wiredTiger.engineConfig.directoryForIndexes为true时,mongod将索引和集合存储在数据(即storage.dbPath)目录下的单独子目录中。具体来说,mongod将索引存储在名为 的子目录中,并将集合数据存储在名为indexcollection的子目录中。您可以使用符号链接,为索引指定不同的位置。具体而言,当
mongod实例未运行时,将index子目录移至目标并在数据目录下创建一个名为index的符号链接,指向新目标。
storage.wiredTiger.engineConfig.zstdCompressionLevel类型:整型
默认:6
版本 5.0 中的新增内容
在版本 8.2 中进行了更改。
指定使用 zstd 压缩器时的压缩级别。
取值范围为 -7 到 22。
正值指定压缩级别,其中较高的
zstdCompressionLevel值会导致更高的压缩比,但费用降低压缩和解压缩速度。负值可提供更快的压缩和解压缩速度,但费用压缩率。
指定值
0将使用 zstd 的内部默认压缩级别 3,该级别与MongoDB默认的 6 不同。仅当
blockCompressorjournalCompressor或 (或两者)设立为 时适用。zstd重要
在降级到早期版本的 MongoDB 时,请确保将
storage.wiredTiger.engineConfig.zstdCompressionLevel设置配置为该版本支持的范围。示例,MongoDB 8.0 支持 1 到 22 的范围。
storage.wiredTiger.collectionConfig.blockCompressor默认值:snappy
指定集合数据的默认压缩类型。创建集合时,您可以针对每个集合覆盖此设置。
可用的压缩类型有:
nonesnappy
zlib
zstd
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 选项
storage: inMemory: engineConfig: inMemorySizeGB: <number>
operationProfiling 选项
operationProfiling: mode: <string> slowOpThresholdMs: <int> slowOpInProgressThresholdMs: <int> slowOpSampleRate: <double> filter: <string>
operationProfiling.mode类型:字符串
默认值:
off指定应该进行性能分析的操作。以下分析器级别可用:
等级说明off分析器已关闭,因此不收集任何数据。这是默认的分析器级别。此级别对应于分析器级别 0。
slowOp分析器会收集耗时超过
slowms值的操作的数据。此级别对应于分析器级别 1。all分析器会收集所有操作的数据。此级别对应于分析器级别 2。
警告
分析会降低性能,并在系统日志中暴露未经加密的查询数据。在生产部署中配置和启用分析器之前,请仔细考虑对性能和安全的影响。
有关潜在性能下降的更多信息,请参阅分析器开销。
operationProfiling.slowOpInProgressThresholdMs类型:整型
默认值:5000
正在进行的查询的慢 operation time 阈值(以毫秒为单位)。MongoDB运行时长超过此阈值的操作记录为正在进行的慢速查询。一旦查询操作超过时间阈值, MongoDB就会将查询为进行中的慢速查询。
operationProfiling.slowOpThresholdMs类型:整型
默认值:100
慢速操作时间阈值(以毫秒为单位)。运行时间超过此阈值的操作被视为慢速操作。
根据
workingMillis记录慢操作,这是 MongoDB 处理该操作所花费的时间。这意味着等待锁和流量控制等因素不会影响操作是否超过慢操作阈值。当
logLevel设立为0时, MongoDB会按照slowOpSampleRate确定的速率将慢速操作记录到诊断日志中。在较高的
logLevel设置下,所有操作都会出现在诊断日志中,无论其延迟如何,但从节点(secondary node from replica set)记录慢速 oplog 条目消息的操作除外。从节点(secondary node from replica set)仅日志慢速 oplog 条目;增加logLevel不会日志所有 oplog 条目。对于
mongod实例,该设置会影响诊断日志,如果启用,还会影响分析器。对于
mongos实例,该设置仅影响诊断日志而不影响分析器,因为mongos无法使用分析。
operationProfiling.slowOpSampleRate类型:double
默认值:1.0
应分析或记录的慢速操作的比例。
operationProfiling.slowOpSampleRate接受 0 到 1(含)之间的值。slowOpSampleRate设置可用于mongod和mongos。对于
mongod实例,该设置会影响诊断日志,如果启用,还会影响分析器。对于
mongos实例,该设置仅影响诊断日志,而不影响分析器,因为mongos不支持分析。
operationProfiling.filter类型:查询文件的字符串表示
一个过滤器表达式,用于控制要分析和记录的操作。
设立
filter后,slowOpThresholdMs和 不用于分析和慢速查询日志行。slowOpSampleRate在配置文件中设置分析过滤器时,该过滤器将应用于部署中的所有数据库。要为特定数据库设置配置文件过滤器,请使用
db.setProfilingLevel()方法。该选项采用以下形式的查询文档的字符串表示形式:
{ <field1>: <expression1>, ... } <field>可以是分析器输出中的任何字段。<expression>是查询条件表达式。要在配置文件中指定分析过滤器,必须:
用单引号将筛选器文档括起来,以便将该文档作为字符串传递。
使用 YAML 格式的配置文件。
例如,以下
filter将分析器配置为记录耗时超过 2 秒的query操作:operationProfiling: mode: all filter: '{ op: "query", millis: { $gt: 2000 } }'
replication 选项
replication: oplogSizeMB: <int> replSetName: <string> enableMajorityReadConcern: <boolean>
replication.oplogSizeMB类型:整型
oplog 的最大大小(以兆字节为单位)。
oplogSizeMB设置将配置 oplog 的未压缩大小,而不是磁盘上的大小。注意
oplog 的大小可能会超过其配置的大小限制,从而避免删除
majority commit point。默认情况下,
mongod进程会根据最大可用空间创建一个 oplog。对于 64 位系统,该 oplog 通常占可用磁盘空间的 5%。只要
mongod首次创建了 oplog,更改replication.oplogSizeMB选项将不会影响 oplog 的大小。要在启动mongod后更改最大 oplog 大小,请使用replSetResizeOplog。使用replSetResizeOplog,可以动态调整 oplog 的大小,而无需重新启动mongod进程。要通过重启保留使用replSetResizeOplog所做的更改,请更新oplogSizeMB的值。更多信息,请参阅 Oplog 大小。
replication.oplogSizeMB设置仅适用于mongod。
replication.replSetName类型:字符串
mongod所属副本集的名称。副本集中的所有托管必须具有相同的设置名称。如果您的应用程序连接到多个副本集,则每个副本集的名称必须不同。有些驱动程序会按副本集名称对副本集连接进行分组。
replication.replSetName设置仅适用于mongod。replication.replSetName不能与storage.indexBuildRetry同时使用。
replication.enableMajorityReadConcern默认值:true
配置对
"majority"读关注的支持。从 MongoDB 5.0 开始,
enableMajorityReadConcern不可更改,并始终设置为true。尝试使用--enableMajorityReadConcern选项启动不支持大多数读关注(read concern)的存储引擎会失败并返回错误消息。在早期版本的 MongoDB 中,
enableMajorityReadConcern是可配置的。警告
如使用主节点-从节点-仲裁节点 (PSA) 三成员架构,请考虑以下因素:
如果从节点不可用或滞后,写关注(write concern)
"majority"可能会导致性能问题。有关如何缓解这些问题的建议,请参阅缓解自管理 PSA 副本集的性能问题。如果使用的全局默认值
"majority",并且写关注小于大多数的大小,则您的查询可能会返回过时(未完全复制)的数据。
sharding 选项
sharding: clusterRole: <string>
sharding.clusterRole类型:字符串
mongod实例在分片集群中的角色。将其设置设为以下之一:值说明configsvr将此实例作为配置服务器启动。默认情况下,该实例在端口
27019上启动。当您将MongoDB实例配置为 clusterRole
configsvr时,您还必须指定replSetName。shardsvr将该实例作为分片启动。默认情况下,该实例在端口
27018上启动。将 MongoDB 实例配置为 clusterRole
shardsvr时,还必须指定replSetName。注意
设置
sharding.clusterRole要求mongod实例在运行时进行复制。要将实例部署为副本集节点,请使用replSetName设置并指定副本集的名称。sharding.clusterRole设置仅适用于mongod。
auditLog 选项
注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
auditLog: destination: <string> format: <string> path: <string> filter: <string> schema: <string>
auditLog.auditEncryptionKeyIdentifier类型:字符串
6.0版本新增。
指定用于审核日志加密的 Key Management Interoperability Protocol (KMIP) 密钥的唯一标识符。
您不能将此选项和
auditLog.localAuditKeyFile同时使用。注意
仅在MongoDB Enterprise中可用。 MongoDB Enterprise和Atlas有不同的配置要求。
auditLog.compressionMode类型:字符串
5.3版本新增。
指定Atlas 审核日志加密的压缩模式。您还必须使用
auditLog.auditEncryptionKeyIdentifier或auditLog.localAuditKeyFile启用Atlas 审核日志加密。您可以将此选项设置为以下值之一:
值说明zstd使用 zstd 算法压缩审核日志。
none(默认)请勿压缩审核日志。
注意
仅在MongoDB Enterprise中可用。 MongoDB Enterprise和Atlas有不同的配置要求。
auditLog.destination类型:字符串
设置后,
auditLog.destination将启用Atlas 审核并指定mongos或mongod将所有Atlas 审核事件发送到何处。auditLog.destination可能的值:值说明syslog将审核事件以 JSON 格式输出到系统日志中。在 Windows 上不可用。审核消息的系统日志严重性级别为
info,设施级别为info。系统日志消息限制可能会导致审核消息被截断。审核系统既不会检测此类截断,也不会在其出现时报错。
console将审核事件以 JSON 格式输出到
stdout。fileauditLog.format以auditLog.path中指定的格式将Atlas 审核事件输出到 中指定的文件。注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
auditLog.filter类型:文档的字符串表示
用于限制 Atlas 审核系统记录的操作类型的过滤器。该选项采用以下形式的查询文档的 string 表示形式:
{ <field1>: <expression1>, ... } <field>可以是 Atlas 审核消息中的任何字段,包括参数文档中返回的字段。<expression>是 查询条件表达式。要指定 Atlas 审核过滤器,请将过滤器文档括在单引号 中,以将文档作为字符串传递。
要在配置文件中指定审核过滤器,必须使用配置文件的 YAML 格式。
注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
auditLog.format类型:字符串
如果
destination为file,则用于 Atlas 审核的输出文件格式为。auditLog.format选项可以有以下值之一:值说明JSON以 JSON 格式将 Atlas 审核事件输出到
auditLog.path中指定的文件。BSON以 BSON 二进制格式将 Atlas 审核事件输出到
auditLog.path中指定的文件。与以 BSON 格式打印相比,将 Atlas 审核事件以 JSON 格式打印到文件更可能导致服务器性能下降。
注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
auditLog.localAuditKeyFile类型:字符串
5.3版本新增。
指定本地审核密钥文件的路径和文件名,用于审核日志加密。
注意
仅将此选项用于测试,因为密钥不安全。要保护密钥的安全,请使用 和外部Key Management Interoperability Protocol
auditLog.auditEncryptionKeyIdentifier(KMIP)服务器。不能同时使用这两个选项。
注意
仅在MongoDB Enterprise中可用。 MongoDB Enterprise和Atlas有不同的配置要求。
auditLog.runtimeConfiguration类型:布尔值
指定节点是否允许审核过滤器和 auditAuthorizationSuccess 变量的运行时配置。如为
true,则该节点可以参与在线审核过滤器管理。
auditLog.schema类型:字符串
默认值:
mongo8.0版本新增。
指定审核日志使用的格式。您可以将
auditLog.schema的以下值之一指定为:值说明mongo日志以 MongoDB 设计的格式写入。
有关日志消息示例,请参阅 Mongo 模式审核消息。
OCSF日志以 OCSF 格式写入。此选项以与日志处理器兼容的标准化格式提供日志。
有关日志消息的示例,请参阅 OCSF 模式审核消息。
mongot 选项
要查看用于配置mongot 和mongod 的选项,请参阅配置mongot。
mongos 专用选项
replication: localPingThresholdMs: <int> sharding: configDB: <string>
replication.localPingThresholdMs类型:整型
默认:15
mongos用于确定哪些辅助副本集成员传递来自客户端的读取操作的 ping 时间(以毫秒为单位)。15的默认值对应于所有客户端驱动程序中的默认值。当
mongos收到允许从节点(secondary node from replica set)读取的请求时,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实例必须指定相同的配置服务器副本集名称,但可指定副本集不同节点的主机名和端口。
Windows 服务选项
processManagement: windowsService: serviceName: <string> displayName: <string> description: <string> serviceUser: <string> servicePassword: <string>
processManagement.windowsService.serviceName类型:字符串
默认值:mongodb
当作为 Windows 服务运行时,
mongos或mongod的服务名称。将此名称与net start <name>和net stop <name>操作一起使用。必须将
processManagement.windowsService.serviceName与--install或--remove选项结合使用。
processManagement.windowsService.description类型:字符串
默认:MongoDB 服务器
运行
mongos或mongod服务说明。必须将
processManagement.windowsService.description与--install选项结合使用。对于包含空格的说明,必须将说明括在引号中。
删除 MMAPv1 选项
MongoDB 删除了已弃用的 MMAPv1 存储引擎和 MMAPv1 特定的配置选项:
删除配置文件设置 | 删除了命令行选项 |
|---|---|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|