文档菜单
文档首页
/
MongoDB 手册
/ / /

mongod

在本页中

  • 概要
  • 兼容性
  • 注意事项
  • 选项
  • 核心选项
  • LDAP 身份验证或授权选项
  • 存储选项
  • WiredTiger 选项
  • 复制选项
  • 分片集群选项
  • TLS 选项
  • 分析器选项
  • 审计选项
  • 内存选项
  • 加密密钥管理选项

mongod 是 MongoDB 系统的主要守护进程。它处理数据请求,管理数据访问,并执行后台管理操作。

本文档提供了 mongod 所有命令行选项的完整概述。这些命令行选项主要用于测试:在常规操作中,使用配置文件选项来控制数据库的行为。

提示

另请参阅

注意

MongoDB禁用了在系统中可用 TLS 1.1+ 加密的情况下对 TLS 1.0 加密的支持。

以下环境中的部署使用 mongod

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

注意

MongoDB Atlas 管理所有 MongoDB Atlas 部署的 mongod

  • mongod 包含一个 全时诊断数据捕获 机制,以协助 MongoDB 工程师进行部署故障排除。如果此线程失败,它将终止源进程。为了避免最常见的失败,请确认运行进程的用户有权限创建 FTDC diagnostic.data 目录。对于 mongod,该目录位于 storage.dbPath 内。对于 mongos,它与 systemLog.path 平行。

已更改在版本6.1:

  • MongoDB 总是启用日志记录。因此,MongoDB 移除了 storage.journal.enabled 选项以及相应的 --journal--nojournal 命令行选项。

已更改在版本5.2:

  • MongoDB 移除了 --cpu 命令行选项。

已更改在版本5.0:

  • MongoDB 移除了 --serviceExecutor 命令行选项以及相应的 net.serviceExecutor 配置选项。

--help, -h

返回有关mongod选项和使用的信息。

--version

返回mongod的发布版本号。

--config <filename>, -f <filename>

指定运行时配置选项的配置文件。配置文件是运行时配置 mongod 的首选方法。这些选项等同于命令行配置选项。有关更多信息,请参阅自管理配置文件选项

确保配置文件使用ASCII编码。mongod 实例不支持非ASCII编码的配置文件,包括UTF-8。

--configExpand <none|rest|exec>

默认值: none

启用配置文件中使用展开指令。展开指令允许您为配置文件选项设置外部源值。

--configExpand 支持以下展开指令

描述
none
默认。不展开 mongod 的展开指令。如果任何配置文件设置使用展开指令,则 mongod 将无法启动。
rest
mongod 在解析配置文件时展开 __rest 展开指令。
exec
mongod 在解析配置文件时展开 __exec 展开指令。

您可以将多个展开指令指定为逗号分隔的列表,例如:rest, exec。如果配置文件包含未指定给 --configExpand 的展开指令,则 mongod 将返回错误并终止。

有关展开指令的更多信息,请参阅自管理部署的外部源配置文件值

--verbose, -v

增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含选项来增加详细程度,例如:-vvvvv

注意

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

--quiet

以静默模式运行mongod,尝试限制输出量。

此选项抑制

--port <port>

默认:

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

--port 选项接受从 065535 的值范围。将端口设置为 0 将使 mongod 使用操作系统分配的任意端口。

--bind_ip <hostnames|ipaddresses|Unix domain socket paths>

默认值: localhost

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

示例

localhost,/tmp/mongod.sock

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

示例

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

注意

如果您指定了 IPv6 地址 解析为 IPv6 地址的主机名到 --bind_ip,则必须使用 --ipv6 启用 IPv6 支持。指定 IPv6 地址到 --bind_ip 不会启用 IPv6 支持。

如果指定了一个链路本地IPv6地址(例如:fe80::/10),必须在地址后添加区域索引(即:fe80::<address>%<adapter-name>)。

示例

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

重要

为了避免由于IP地址更改而引起的配置更新,请使用DNS主机名而不是IP地址。当配置副本集成员或分片集群成员时,使用DNS主机名而不是IP地址尤为重要。

从MongoDB 5.0开始,仅配置了IP地址的节点将无法通过启动验证,并且不会启动,请使用主机名而不是IP地址来配置跨越分割网络视域的集群。

警告

在将实例绑定到公开可访问的IP地址之前,您必须确保集群的安全性不受未经授权的访问。有关安全建议的完整列表,请参阅自托管部署安全清单。至少,请考虑启用身份验证强化网络基础设施

有关IP绑定的更多信息,请参阅自托管部署中的IP绑定文档。

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

要绑定到所有IPv4和IPv6地址,请输入::,0.0.0.0或一个星号"*"(用引号括起星号以避免文件名模式扩展)。或者,使用net.bindIpAll设置。

注意

  • --bind_ip--bind_ip_all 是互斥的。同时指定这两个选项会导致 mongod 抛出错误并终止。

  • 命令行选项 --bind 会覆盖配置文件设置 net.bindIp.

--bind_ip_all

如果指定,mongod 实例将绑定到所有 IPv4 地址(即 0.0.0.0)。如果 mongod--ipv6 启动,--bind_ip_all 也会绑定到所有 IPv6 地址(即 ::)。

mongod 仅在以 --ipv6 启动时支持 IPv6。单独指定 --bind_ip_all 并不会启用 IPv6 支持。

警告

在将实例绑定到公开可访问的IP地址之前,您必须确保集群的安全性不受未经授权的访问。有关安全建议的完整列表,请参阅自托管部署安全清单。至少,请考虑启用身份验证强化网络基础设施

有关IP绑定的更多信息,请参阅自托管部署中的IP绑定文档。

或者,您可以将 --bind_ip 选项设置为 ::,0.0.0.0 或星号 "*"(将星号放在引号中,以避免文件名模式扩展)。

注意

--bind_ip--bind_ip_all 是互斥的。也就是说,您可以指定其中一个,但不能同时指定两个。

--clusterIpSourceAllowlist <string>

新功能在版本5.0.

IP地址/CIDR(无类别域间路由(Classless Inter-Domain Routing))列表,用于验证来自副本集其他成员的mongod身份验证请求,如果是分片集群的一部分,还包括mongos实例。如果IP地址既不在列表中,也不属于列表中的CIDR范围,则服务器不会验证mongodmongos

--clusterIpSourceAllowlist对于未启用身份验证mongod没有作用。

--clusterIpSourceAllowlist接受多个以逗号分隔的IPv4/6地址或无类别域间路由(CIDR(Classless Inter-Domain Routing))范围。

mongod --clusterIpSourceAllowlist 192.0.2.0/24,127.0.0.1,::1

重要

请确保--clusterIpSourceAllowlist包括部署中每个副本集成员或mongos的IP地址或CIDR范围,以确保集群组件之间通信正常。

--clusterIpSourceWhitelist <字符串>

自版本 5.0 已弃用: 使用 --clusterIpSourceAllowlist 代替。

IP地址/CIDR(无类别域间路由(Classless Inter-Domain Routing))列表,用于验证来自副本集其他成员的mongod身份验证请求,如果是分片集群的一部分,还包括mongos实例。如果IP地址既不在列表中,也不属于列表中的CIDR范围,则服务器不会验证mongodmongos

--clusterIpSourceWhitelist 在未启用 身份验证mongod 上不起作用。

--clusterIpSourceWhitelist 接受多个以逗号分隔的 IPv4/6 地址或无类别域间路由 (CIDR) 范围。

mongod --clusterIpSourceWhitelist 192.0.2.0/24,127.0.0.1,::1

重要

确保 --clusterIpSourceWhitelist 包括每个副本集成员或 mongos 在部署中的 IP 地址或 CIDR 范围,以确保集群组件之间的通信正常。

--ipv6

启用 IPv6 支持。默认情况下,mongod 禁用 IPv6 支持。

设置 --ipv6 不会将 mongod 指向监听任何本地 IPv6 地址或接口。为了配置 mongod 在 IPv6 接口上监听,您必须

  • 使用一个或多个解析为 IPv6 地址的 IPv6 地址或主机名配置 --bind_ip或者

  • --bind_ip_all 设置为 true

--listenBacklog <number>

默认值:目标系统 SOMAXCONN 常量

在监听队列中可以存在的最大连接数。

警告

在使用此参数之前,请查阅本地系统文档以了解限制和配置要求。

重要

为了防止未定义的行为,请为此参数指定一个介于 1 和本地系统 SOMAXCONN 常量之间的值。

listenBacklog 参数的默认值在编译时设置为目标系统 SOMAXCONN 常量。 SOMAXCONN 是对 listen 系统调用的 backlog 参数文档化的最大有效值。

一些系统可能将 SOMAXCONN 符号化解释,而另一些系统则数值化解释。实际应用的 listen backlog 可能与 SOMAXCONN 常量或 --listenBacklog 参数的任何数值解释不同,并且可能还受系统设置(如 Linux 上的 net.core.somaxconn)的限制。

如果为 listenBacklog 参数传递的值超过本地系统的 SOMAXCONN 常量,根据标准,这是未定义的行为。更高的值可能被静默地整除,可能被忽略,可能引起意外的资源消耗,或者有其他不利后果。

对于显示连接峰值的工作负载系统,已知本地系统可以尊重比 SOMAXCONN 常量更高的 backlog 参数值,将 listenBacklog 参数设置为更高的值可能通过减少被迫进入回退状态的连接数量来减少客户端观察到的操作延迟。

--maxConns <number>

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

请不要为此选项分配过低的值,否则您会在正常应用程序操作期间遇到错误。

--logpath <path>

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

默认情况下,MongoDB会移动任何现有的日志文件,而不是覆盖它。要改为追加到日志文件,请设置--logappend选项。

--syslog

将所有日志输出发送到主机的 syslog 系统而不是标准输出或日志文件(--logpath)。

在 Windows 上不支持 --syslog 选项。

警告

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

MongoDB 在其日志消息中包含 组件 以记录到 syslog

... ACCESS [repl writer worker 5] Unsupported modification to roles collection ...
--syslogFacility <string>

默认值:用户

指定将消息记录到 syslog 时使用的设施级别。您指定的值必须得到操作系统对 syslog 的实现支持。要使用此选项,您必须启用 --syslog 选项。

--logappend

mongod 实例重新启动时,将新条目追加到现有日志文件的末尾。如果没有此选项,mongod 会备份现有日志并创建一个新文件。

--logRotate <string>

默认值:rename

确定在旋转服务器日志和/或审计日志时,logRotate命令的行为。指定renamereopen

  • rename重命名日志文件。

  • reopen关闭并重新打开日志文件,遵循典型的Linux/Unix日志旋转行为。在使用Linux/Unix日志旋转工具时使用reopen以避免日志丢失。

    如果指定reopen,则还必须使用--logappend

--timeStampFormat <string>

默认值: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

注意

--timeStampFormat不再支持ctime。一个ctime格式日期的示例是:Wed Dec 31 18:17:54.811

--traceExceptions

仅限内部诊断使用。

--pidfilepath <path>

指定存储 mongod 进程进程ID(PID)的文件位置。运行 mongodmongos 进程的用户必须能够写入此路径。如果不指定 --pidfilepath 选项,进程不会创建 PID 文件。此选项通常仅与 --fork 选项一起使用。

注意

Linux

在 Linux 上,PID 文件管理通常是您发行版的 init 系统的责任:通常是位于 /etc/init.d 目录中的服务文件,或使用 systemctl 注册的 systemd 单元文件。如果您不使用这些 init 系统,则仅使用 --pidfilepath 选项。有关更多信息,请参阅您操作系统的相应 安装指南

注意

macOS

在 macOS 上,PID 文件管理通常由 brew 处理。如果您不使用 macOS 系统上的 brew,则仅使用 --pidfilepath 选项。有关更多信息,请参阅您操作系统的相应安装指南。

--keyFile <文件>

指定存储MongoDB实例之间在分片集群副本集中相互认证的共享密钥的密钥文件的路径。使用 --keyFile 将隐式启用 --auth。有关更多信息,请参阅自管理内部/成员身份认证

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

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

  • 密钥字符串的序列

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

--setParameter <选项>

指定MongoDB服务器参数中描述的MongoDB参数之一。您可以为多个 setParameter 字段指定。

--nounixsocket

禁用监听UNIX域套接字。--nounixsocket 仅适用于基于Unix的系统。

除非以下情况之一,否则 mongod 进程始终监听UNIX套接字:

从官方 .deb.rpm 包安装的 mongod 默认将 bind_ip 配置设置为 127.0.0.1

--unixSocketPrefix <path>

默认值:/tmp

UNIX套接字路径。--unixSocketPrefix 仅适用于基于Unix的系统。

如果此选项没有值,则 mongod 进程将创建一个以 /tmp 为前缀的套接字。MongoDB会创建并监听一个UNIX套接字,除非以下情况之一:

--filePermissions <路径>

默认值: 0700

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

--filePermissions 仅适用于基于Unix的系统。

--fork

启用守护进程模式,在后台运行mongod进程。Windows上不支持--fork选项。

默认情况下,mongod不以守护进程方式运行。您可以通过使用--fork或控制守护进程化的进程(如upstartsystemd)来以守护进程方式运行mongod

要使用--fork,请使用以下方式之一配置mongod的日志输出:

--auth

启用授权以控制用户对数据库资源和操作的访问。启用授权后,MongoDB要求所有客户端先进行身份验证,以确定客户端的访问权限。

要配置用户,请使用mongosh客户端。如果没有用户存在,本地接口将访问数据库,直到您创建第一个用户。

有关更多信息,请参阅安全

--noauth

禁用身份验证。目前是默认设置。存在以保持未来兼容性和清晰性。

--transitionToAuth

允许 mongod 接受并创建与部署中其他 mongodmongos 实例的认证和非认证连接。用于执行副本集或分片集群从无认证配置到 内部认证 的滚动过渡。需要指定一个 内部认证 机制,例如 --keyFile

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

使用 --transitionToAuth 运行的 mongod 不强制执行 用户访问控制。用户可以连接到您的部署而无需进行任何访问控制检查,并执行读取、写入和管理操作。

注意

运行 内部认证没有 使用 --transitionToAuthmongod 要求客户端使用 用户访问控制 连接。在重启 mongod 而不带 --transitionToAuth 之前,更新客户端以使用适当的 用户 连接到 mongod

--sysinfo

返回诊断系统信息然后退出。该信息提供了页面大小、物理页面数和可用物理页面数。

--noscripting

禁用脚本引擎。

--notablescan

禁止需要进行集合扫描的操作。有关更多信息,请参阅 notablescan

--shutdown

--shutdown 选项可以干净且安全地终止 mongod 进程。当使用此选项调用 mongod 时,必须通过直接设置或通过配置文件和 --config 选项设置 --dbpath 选项。

选项 --shutdown 仅在 Linux 系统上可用。

有关其他关闭方式,请参阅停止 mongod 进程。

--redactClientLogData

仅适用于 MongoDB 企业版。

在带有 --redactClientLogDatamongod 运行时,会抹去与特定日志事件伴随的消息,然后在记录之前。这可以防止 mongod 将存储在数据库中的可能敏感数据写入诊断日志。元数据(如错误或操作代码、行号和源文件名)在日志中仍然可见。

请将 --redactClientLogData静态加密TLS/SSL(传输加密) 结合使用,以帮助符合监管要求。

例如,MongoDB 部署可能会在其中一个或多个集合中存储个人身份信息(PII)。mongod 记录事件,如与 CRUD 操作、分片元数据等相关的事件。可能的情况是,mongod 可能会将 PII 作为这些日志操作的一部分暴露出来。带有 --redactClientLogDatamongod 在输出到日志之前会抹去伴随这些事件的任何消息,从而有效地抹去 PII。

带有 --redactClientLogDatamongod 的诊断可能由于与日志事件相关的数据的缺失而更加困难。请参阅进程日志手册页面,了解 --redactClientLogData 对日志输出的影响。

在运行的 mongod 上,使用带有 setParameter 命令和 redactClientLogData 参数来配置此设置。

--networkMessageCompressors <字符串>

默认值: snappy,zstd,zlib

指定此 mongod 实例与

  • 副本集或分片集群中的其他成员之间通信所使用的默认压缩器(如果该实例是副本集或分片集群的一部分)

  • mongosh

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

MongoDB 支持以下压缩器

注意

both mongodmongos 实例默认使用 snappy,zstd,zlib 压缩器,顺序依次为这些。

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

重要

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

如果您指定了多个压缩器,则压缩器的顺序以及通信发起者也很重要。例如,如果 mongosh 指定了以下网络压缩器 zlib,snappy,而 mongod 指定 snappy,zlib,则 mongoshmongod 之间的消息使用 zlib

如果各方不共享至少一个共同的压缩器,则各方之间的消息不会被压缩。例如,如果 mongosh 指定网络压缩器 zlib,而 mongod 指定 snappy,则 mongoshmongod 之间的消息不会被压缩。

--timeZoneInfo <路径>

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

随Linux和macOS软件包提供的配置文件默认将时区数据库路径设置为/usr/share/zoneinfo

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

wget https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip
unzip timezonedb-latest.zip
mongod --timeZoneInfo timezonedb-2017b/

警告

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

为了在 MongoDB 5.0 之前的版本中明确链接到时区数据库,请下载 时区数据库,并使用 timeZoneInfo 参数。

--outputConfig

mongod 实例的配置选项以 YAML 格式输出到 stdout 并退出 mongod 实例。对于使用 自管理部署的外部配置文件值 的配置选项,--outputConfig 返回这些选项的解析值。

警告

这可能包括之前通过外部来源混淆的任何配置密码或机密信息。

有关使用示例,请参阅

注意

从MongoDB 8.0开始,LDAP身份验证和授权已弃用。LDAP在MongoDB 8.0的生命周期内将继续可用且不受影响。在未来的一个主要版本中,LDAP将被移除。

有关详细信息,请参阅LDAP弃用。

--ldapServers <host1>:<port>,<host2>:<port>,...,<hostN>:<port>

仅适用于 MongoDB 企业版。

mongod认证用户或确定用户在特定数据库上可执行的操作的LDAP服务器。如果指定的LDAP服务器有任何副本实例,您可以在逗号分隔的列表中指定每个副本服务器的主机名和端口号。

如果您的LDAP基础设施将LDAP目录分布在多个LDAP服务器上,请指定一个LDAP服务器或其任何副本实例到 --ldapServers。MongoDB支持以下LDAP引用,如RFC 4511 4.1.10 中定义。不要使用 --ldapServers 来列出您基础设施中的每个LDAP服务器。

此设置可以在运行的 mongod 上使用 setParameter 进行配置。

如果未设置,mongod 将无法使用 LDAP身份验证或授权。

--ldapValidateLDAPServerConfig <布尔值>

仅适用于MongoDB企业版

一个标志,用于确定mongod实例是否在启动过程中检查LDAP服务器的可用性。

  • 如果true,则mongod实例执行可用性检查,并且只有在LDAP服务器可用的情况下才会继续启动。

  • 如果false,则mongod实例跳过可用性检查;即实例即使LDAP服务器不可用也会启动。

--ldapQueryUser <字符串>

仅适用于 MongoDB 企业版。

当连接到或对LDAP服务器执行查询时,mongod 绑定的身份。

如果以下任何一项为真,则需要

必须使用 --ldapQueryUser--ldapQueryPassword

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

此设置可以在运行的 mongod 上使用 setParameter 进行配置。

注意

Windows MongoDB部署可以使用 --ldapBindWithOSDefaults 而不是 --ldapQueryUser--ldapQueryPassword。不能同时指定 --ldapQueryUser--ldapBindWithOSDefaults

--ldapQueryPassword <字符串 | 数组>

仅适用于 MongoDB 企业版。

使用 --ldapQueryUser 绑定到LDAP服务器时使用的密码。必须使用 --ldapQueryPassword--ldapQueryUser

如果没有设置,mongod 不会尝试绑定到LDAP服务器。

您可以在运行的 mongod 上使用 setParameter 命令来配置此设置。

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

注意

Windows MongoDB 部署可以使用 --ldapBindWithOSDefaults 而不是使用 --ldapQueryUser--ldapQueryPassword。您不能同时指定 --ldapQueryPassword--ldapBindWithOSDefaults

--ldapBindWithOSDefaults <bool>

默认值:false

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

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

仅在以下情况下需要

使用 --ldapBindWithOSDefaults 来替换 --ldapQueryUser--ldapQueryPassword

--ldapBindMethod <string>

默认值:simple

仅适用于 MongoDB 企业版。

方法 mongod 用于对 LDAP 服务器进行身份验证。与 --ldapQueryUser--ldapQueryPassword 一起使用,以连接到 LDAP 服务器。

--ldapBindMethod 支持以下值

  • simple - mongod 使用简单身份验证。

  • sasl - mongod 使用 SASL 协议进行身份验证

如果您指定了 sasl,您可以使用 --ldapBindSaslMechanisms 配置可用的 SASL 机制。mongod 默认使用 DIGEST-MD5 机制。

--ldapBindSaslMechanisms <string>

默认值: DIGEST-MD5

仅适用于 MongoDB 企业版。

一个逗号分隔的 SASL 机制列表,mongod 在身份验证 LDAP 服务器时可以使用。mongod 和 LDAP 服务器必须至少同意一种机制。mongod 在运行时动态加载主机机器上安装的任何 SASL 机制库。

mongod 主机和远程 LDAP 服务器主机上安装和配置所选 SASL 机制(们)的适当库。您的操作系统可能默认包含某些 SASL 库。请参阅每个 SASL 机制的文档以获取安装和配置的指导。

如果您使用的是 GSSAPI SASL 机制与 自托管部署上的 Kerberos 身份验证 一起使用,请验证 mongod 主机机器上的以下内容

Linux
  • KRB5_CLIENT_KTNAME 环境变量解析为主机机器的客户端 Linux Keytab 文件 的名称。有关 Kerberos 环境变量的更多信息,请参阅 Kerberos 文档。

  • 客户端 keytab 包含一个用于在连接到 LDAP 服务器和执行 LDAP 查询时使用的 用户主体

Windows
如果连接到 Active Directory 服务器,则在用户登录系统时,Windows Kerberos 配置会自动生成一个 票证授予票证。将 --ldapBindWithOSDefaults 设置为 true 以允许 mongod 在连接到 Active Directory 服务器和执行查询时使用生成的凭据。

--ldapBindMethod 设置为 sasl 以使用此选项。

注意

关于SASL机制的完整列表,请参阅IANA列表。请参考您的LDAP或Active Directory服务的文档以确定与服务兼容的SASL机制。

MongoDB不是SASL机制库的来源,MongoDB文档也不是安装或配置任何特定SASL机制的权威来源。有关文档和支持,请参考SASL机制库供应商或所有者。

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

--ldapTransportSecurity <string>

默认值: tls

仅适用于 MongoDB 企业版。

默认情况下,mongod 会创建一个TLS/SSL加密连接到LDAP服务器。

对于Linux部署,您必须在/etc/openldap/ldap.conf文件中配置适当的TLS选项。操作系统包管理器在通过libldap依赖项安装MongoDB企业版时创建此文件。请参阅ldap.conf OpenLDAP文档以获取更完整的说明。

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

--ldapTransportSecurity设置为none以禁用mongod与LDAP服务器之间的TLS/SSL。

警告

--ldapTransportSecurity 设置为 none 会将明文信息和可能的凭据在 mongod 和 LDAP 服务器之间传输。

--ldapTimeoutMS <int>

默认: 10000

仅适用于 MongoDB 企业版。

指定 mongod 等待 LDAP 服务器响应请求的时间(以毫秒为单位)。

增加 --ldapTimeoutMS 的值可以防止 MongoDB 服务器和 LDAP 服务器之间的连接失败,如果失败的原因是连接超时。减少 --ldapTimeoutMS 的值可以减少 MongoDB 等待 LDAP 服务器响应的时间。

此设置可以在运行的 mongod 上使用 setParameter 进行配置。

--ldapRetryCount <int>

新功能在版本6.1.

默认: 0

仅适用于 MongoDB 企业版。

在网络错误发生后,服务器 LDAP 管理员执行的尝试操作次数。

--ldapUserToDNMapping <string>

仅适用于 MongoDB 企业版。

将提供给 mongod 用于身份验证的用户名映射到 LDAP 的区分名称 (DN)。在以下情况下,您可能需要使用 --ldapUserToDNMapping 将用户名转换为 LDAP DN:

  • 使用简单的LDAP绑定进行LDAP身份验证,用户使用非完整的LDAP DNs的用户名来认证MongoDB。

  • 使用需要DN的LDAP授权查询模板

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

--ldapUserToDNMapping期望一个用引号括起来的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正则表达式匹配的认证名称插入到LDAP查询URI编码中,符合RFC4515和RFC4516。每个花括号包围的数字值将被从认证用户名中通过match表达式提取的相应的正则表达式捕获组替换。 mongod执行查询以针对LDAP服务器检索认证用户的LDAP DN。 mongod需要恰好一个返回结果才能成功转换,否则mongod将跳过此转换。
"ou=engineering,dc=example, dc=com??one?(user={0})"

注意

关于RFC4514RFC4515RFC4516或LDAP查询的内容不包含在MongoDB文档的范围内。请直接查看RFC或使用您首选的LDAP资源。

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

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

如果给定的文档与提供的认证名称不匹配,mongod将继续遍历文档列表以查找更多匹配项。如果在任何文档中都没有找到匹配项,或者文档描述的转换失败,mongod将返回错误。

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

从MongoDB 5.0开始,--ldapUserToDNMapping接受空字符串""或空数组[ ]作为映射文档。如果向--ldapUserToDNMapping提供空字符串或空数组,MongoDB将映射认证用户名为LDAP DN。在早期版本中,提供空映射文档会导致映射失败。

示例

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

重要

您必须将数组作为字符串传递给--ldapUserToDNMapping

"[
{
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)"mongod在LDAP服务器上执行此查询,返回结果"cn=bob,ou=dba,dc=example,dc=com"

如果未设置--ldapUserToDNMappingmongod在尝试对LDAP服务器进行用户认证或授权时不会对用户名进行任何转换。

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

--ldapAuthzQueryTemplate <字符串>

仅适用于 MongoDB 企业版。

一个相对的LDAP查询URL,格式遵循RFC4515RFC4516规范,该规范用于执行由mongod执行的查询以获取认证用户所属的LDAP组。查询相对于在--ldapServers.中指定的主机或主机。

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

替换令牌
描述
{USER}
替换认证的用户名,或如果指定了用户映射,则替换转换后的用户名。
{PROVIDED_USER}
替换提供的用户名,即在进行认证或LDAP转换之前。

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

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

如果您的查询包含一个属性,mongod 假设查询检索的是该实体所属的 DNs。

如果您的查询不包含属性,mongod 假设查询检索的是用户所属的所有实体。

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

示例

此 LDAP 查询返回 LDAP 用户对象 memberOf 属性中列出的任何组。

"{USER}?memberOf?base"

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

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

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

注意

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

--storageEngine string

默认值: wiredTiger

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

描述
wiredTiger
inMemory

指定 自管理部署的内存存储引擎。

仅适用于 MongoDB 企业版。

如果您尝试启动一个包含由除由 --dbpath 指定的存储引擎生成的数据文件的 mongod,则 mongod 不会启动。

--dbpath <path>

默认值: Linux 和 macOS 上为 /data/db,Windows 上为 \data\db

存储 mongod 实例数据的目录。

如果您使用的是包含在 MongoDB 软件包管理器安装中的默认 配置文件,则相应的 storage.dbPath 设置使用不同的默认值。

--dbpath中指定的文件必须与在--storageEngine中指定的存储引擎相对应。如果数据文件与--storageEngine不匹配,则mongod不会启动。

--directoryperdb

为每个数据库使用单独的目录来存储数据。这些目录位于--dbpath目录下,每个子目录的名称对应于数据库的名称。

此选项不可用于使用内存存储引擎mongod实例。

从MongoDB 5.0开始,在启用--directoryperdb的情况下删除数据库中的最后一个集合(或删除数据库本身)会删除该数据库的新空子目录。

要更改现有部署中的--directoryperdb选项

  • 对于独立实例

    1. 在现有的mongod实例上使用mongodump来生成备份。

    2. 停止mongod实例。

    3. 添加--directoryperdb值并配置新的数据目录

    4. 重新启动mongod实例。

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

  • 对于复制集

    1. 停止一个次要成员。

    2. 向该次要成员添加--directoryperdb值并配置新的数据目录。

    3. 重新启动该次要成员。

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

    5. 以相同的方式更新剩余的次要成员。

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

--syncdelay <值>

默认: 60

控制MongoDB将数据刷新到数据文件之前可以过去多长时间。

不要在生产系统上设置此值。在几乎所有情况下,您都应该使用默认设置。

mongod进程会非常快地将数据写入日志并懒写入数据文件。--syncdelay日志记录没有影响,但如果将--syncdelay设置为0,则日志最终会消耗所有可用磁盘空间。

此选项不可用于使用内存存储引擎mongod实例。

为了提供持久数据,WiredTiger使用检查点。有关更多信息,请参阅日志记录和WiredTiger存储引擎

--upgrade

在需要时,将--dbpath指定的文件的磁盘数据格式升级到最新版本。

此选项仅影响旧格式数据文件的mongod操作。

在大多数情况下,您不应该设置此值,这样您可以更好地控制升级过程。有关升级过程的信息,请参阅MongoDB发布说明。

--repair

在 mongod 实例的所有数据库上运行修复例程。

从 MongoDB 5.0 开始

  • 修复操作验证集合以查找任何不一致性,并在可能的情况下修复它们,从而避免重建索引。

  • 如果集合的数据文件已恢复或集合存在验证步骤无法修复的不一致性,则将重新构建所有索引。

提示

如果启用了 日志记录,则几乎不需要运行修复,因为服务器可以使用日志文件自动将数据文件恢复到干净状态。但是,在某些需要从磁盘级别数据损坏中恢复的情况下,您可能需要运行修复。

警告

  • 只有在没有其他选择时才使用 mongod --repair。此操作在修复过程中会删除并保存任何损坏的数据。

  • 避免对副本集成员运行 --repair

    • 要修复 副本集 成员,如果您有数据的完整副本(例如,最近的备份或 副本集 的完整成员),请从该完整副本恢复。有关更多信息,请参阅同步自管理的副本集成员。

    • 如果您选择对副本集成员运行 mongod --repair,并且操作修改了数据或元数据,则必须执行完全同步,以便成员重新加入副本集。

  • 在使用 --repair 之前,请备份 dbpath 目录的副本。

  • 如果修复因任何原因失败,您必须使用 --repair 选项重新启动实例。

--journalCommitInterval <值>

默认: 100

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

在WiredTiger中,默认的日志提交间隔为100毫秒。包含或暗示j:true的写操作将立即同步日志。有关详细信息以及影响同步频率的其他条件,请参阅日志过程。

此选项不可用于使用内存存储引擎mongod实例。

--wiredTigerCacheSizeGB <浮点数>

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

值范围从 0.25 GB 到 10000 GB。

默认的WiredTiger内部缓存大小是以下两者中的较大者:

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

  • 256 MB。

例如,在一个总共有4GB RAM的系统上,WiredTiger缓存使用1.5GB RAM(0.5 * (4 GB - 1 GB) = 1.5 GB)。相反,在一个总共有1.25GB RAM的系统上,WiredTiger将256 MB分配给WiredTiger缓存,因为这是总RAM减去1GB后的一半以上的值(0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB)。

注意

在某些情况下,例如在容器中运行时,数据库可能具有低于系统总内存的内存限制。在这种情况下,此内存限制而不是总系统内存被用作最大可用RAM。

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

请避免将WiredTiger内部缓存大小增加到其默认值以上。

使用WiredTiger时,MongoDB同时使用WiredTiger内部缓存和文件系统缓存。

对于文件系统缓存,MongoDB会自动使用所有未被WiredTiger缓存或其它进程使用的空闲内存。

注意

--wiredTigerCacheSizeGB限制WiredTiger内部缓存的大小。操作系统使用可用空闲内存作为文件系统缓存,这允许压缩的MongoDB数据文件保持在内存中。此外,操作系统使用任何空闲RAM来缓冲文件系统块和文件系统缓存。

为了适应额外的RAM消费者,您可能需要减小WiredTiger内部缓存大小。

默认的WiredTiger内部缓存大小值假定每台机器上只有一个 mongod 实例。如果一台机器包含多个MongoDB实例,那么您应该降低设置以适应其他 mongod 实例。

如果您在一个(例如,lxccgroups,Docker等)没有访问系统所有可用RAM的容器中运行 mongod,您必须将 --wiredTigerCacheSizeGB 设置为小于容器中可用RAM的值。确切的金额取决于容器中运行的其他进程。见 memLimitMB.

--wiredTigerJournalCompressor <compressor>

默认值: snappy

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

可用的压缩器有

--wiredTigerDirectoryForIndexes

当你使用mongod--wiredTigerDirectoryForIndexes启动时,mongod将在数据目录(即--dbpath)下存储索引和集合到单独的子目录中。具体来说,mongod将索引存储在名为index的子目录中,并将集合数据存储在名为collection的子目录中。

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

--wiredTigerCollectionBlockCompressor <compressor>

默认值: snappy

指定集合数据的默认压缩方式。在创建集合时,您可以根据每个集合覆盖此设置。

可用的压缩器有

--wiredTigerCollectionBlockCompressor 影响所有创建的集合。如果您在现有的 MongoDB 部署中更改 --wiredTigerCollectionBlockCompressor 的值,所有新集合将使用指定的压缩器。现有集合将继续使用创建时指定的压缩器或当时的默认压缩器。

--wiredTigerIndexPrefixCompression <boolean>

默认值: true

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

指定 true--wiredTigerIndexPrefixCompression 以启用索引数据的前缀压缩,或指定 false 以禁用索引数据的前缀压缩。

--wiredTigerIndexPrefixCompression 设置影响所有创建的索引。如果您在现有的 MongoDB 部署中更改 --wiredTigerIndexPrefixCompression 的值,所有新索引将使用前缀压缩。现有索引不受影响。

--replSet <setname>

配置复制。将副本集名称作为参数指定给此集合。副本集内的所有主机都必须具有相同的集合名称。

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

--oplogSize <value>

oplog 的最大大小(以兆字节为单位)。oplogSize 设置配置了 oplog 的未压缩大小,而不是磁盘上的大小。

注意

为了避免删除 majority commit point,oplog 可以增长超过其配置的大小限制。

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

mongod 第一次创建 oplog 后,更改 --oplogSize 选项不会影响 oplog 的大小。要在启动 mongod 后更改最小 oplog 保留期,请使用 replSetResizeOplog。使用 replSetResizeOplog 可以动态调整 oplog 的大小,而无需重新启动 mongod 进程。要使使用 replSetResizeOplog 所做的更改在重启时持久化,请更新 --oplogSize 的值。

有关更多信息,请参阅Oplog Size

--oplogMinRetentionHours <value>

指定保留操作日志条目所需的最小小时数,其中小数表示小时的小数部分。例如,1.5 表示一小时三十分钟。

该值必须大于或等于 0。值为 0 表示 mongod 应截断操作日志,从最旧的条目开始,以保持配置的最大操作日志大小。

默认值为 0

使用 --oplogMinRetentionHours 启动的 mongod 仅在以下情况下删除操作日志条目

  • 操作日志达到配置的最大操作日志大小

  • 操作日志条目根据主机系统时钟,比配置的小时数更早

当配置最小操作日志保留期时,mongod 具有以下行为

  • 操作日志可以无限制地增长,以保留配置的小时数的操作日志条目。这可能导致由于高写入量和大的保留期而减少或耗尽系统磁盘空间。

  • 如果操作日志超过其最大大小,即使操作日志返回到其最大大小或配置为更小的最大大小,mongod 也可能继续保留该磁盘空间。有关如何减少操作日志大小而不立即返回磁盘空间的信息,请参阅Reducing Oplog Size Does Not Immediately Return Disk Space.

  • 在执行操作日志条目保留时,mongod 将系统墙钟与操作日志条目创建墙钟时间进行比较。集群组件之间的时钟漂移可能导致意外的操作日志保留行为。有关集群成员之间时钟同步的更多信息,请参阅Clock Synchronization

在启动 mongod 之后更改最小oplog保留期,请使用 replSetResizeOplog。使用 replSetResizeOplog 可动态调整oplog大小,而无需重启 mongod 进程。若要通过重启持久化使用 replSetResizeOplog 所做的更改,请更新 --oplogMinRetentionHours 的值。

--enableMajorityReadConcern

默认值: true

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

从 MongoDB 5.0 开始,--enableMajorityReadConcern 不能更改,始终设置为 true。在 MongoDB 的早期版本中,--enableMajorityReadConcern 是可配置的。

警告

如果您正在使用由三个成员组成的主-次-仲裁者(PSA)架构,请考虑以下内容

  • 如果次级不可用或延迟,则写入关注 "majority" 可能会导致性能问题。有关缓解这些问题的建议,请参阅 使用自管理 PSA 副本集缓解性能问题。

  • 如果您正在使用全局默认的 "majority" 读取关注度,且写入关注度小于多数的大小,则您的查询可能会返回陈旧(未完全复制)的数据。

--configsvr

如果启动配置服务器,则必须指定。

声明此 mongod 实例作为分片集群的配置服务器。当使用此选项时,客户端(即其他集群组件)无法将数据写入除 configadmin 之外的其他数据库。具有此选项的 mongod 的默认端口号为 27019,默认 --dbpath 目录为 /data/configdb,除非指定。

重要

使用 --configsvr 启动 MongoDB 服务器时,还必须指定 --replSet

不再支持使用已弃用的镜像 mongod 实例作为配置服务器(SCCC)。

副本集配置服务器(CSRS)必须运行 WiredTiger 存储引擎

--configsvr 选项创建一个本地 操作日志

不要将 --configsvr 选项与 --shardsvr 一起使用。配置服务器不能是分片服务器。

请勿与--configsvr参数一起使用skipShardingConfigurationChecks。也就是说,如果您暂时以独立模式启动mongod进行维护操作,请包括参数skipShardingConfigurationChecks并排除--configsvr。维护完成后,请移除skipShardingConfigurationChecks参数,并使用--configsvr重启。

--shardsvr

启动分片服务器时必须使用。

将此mongod实例配置为分片集群中的分片。这些实例的默认端口为27018

重要

使用--shardsvr启动MongoDB服务器时,还必须指定--replSet

请勿与--shardsvr参数一起使用skipShardingConfigurationChecks。也就是说,如果您暂时以独立模式启动mongod进行维护操作,请包括参数skipShardingConfigurationChecks并排除--shardsvr。维护完成后,请移除skipShardingConfigurationChecks参数,并使用--shardsvr重启。

提示

查看

配置 mongodmongos 以使用 TLS/SSL 以获取 MongoDB 对 TLS 支持的完整文档。

--tlsMode <mode>

启用所有网络连接使用的 TLS。 --tlsMode 选项的参数可以是以下之一

描述
禁用
服务器不使用 TLS。
允许 TLS
服务器之间的连接不使用 TLS。对于传入连接,服务器接受 TLS 和非 TLS。
偏好 TLS
服务器之间的连接使用 TLS。对于传入连接,服务器接受 TLS 和非 TLS。
要求 TLS
服务器使用并仅接受 TLS 加密的连接。

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

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

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsCertificateKeyFile <filename>

指定包含TLS证书和私钥的.pem文件。

在macOS或Windows上,您可以使用--tlsCertificateSelector选项,从操作系统的安全证书存储中指定证书,而不是PEM密钥文件。--tlsCertificateKeyFile--tlsCertificateSelector选项互斥。您只能指定其中一个。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsCertificateKeyFilePassword <value>

指定解密证书密钥文件的密码(即 --tlsCertificateKeyFile)。只有在证书密钥文件被加密时,才应使用 --tlsCertificateKeyFilePassword 选项。在任何情况下,mongod 都会将密码从所有日志和报告输出中删除。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--clusterAuthMode <option>

默认值: 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 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsClusterFile <filename>

指定包含集群或副本集成员身份验证的 x.509 证书-密钥文件的 .pem 文件。

在 macOS 或 Windows 上,您可以使用--tlsClusterCertificateSelector 选项指定操作系统安全证书存储中的证书,而不是 PEM 密钥文件。 --tlsClusterFile--tlsClusterCertificateSelector 选项是互斥的。您只能指定其中一个。

如果 --tlsClusterFile 没有指定内部集群身份验证的 .pem 文件或替代的 --tlsClusterCertificateSelector,则集群将使用 --tlsCertificateKeyFile 选项中指定的 .pem 文件或由 --tlsCertificateSelector 返回的证书。

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

mongodmongos 如果连接的 x.509 证书在 30 天内到期,则会记录一个警告。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

重要

仅限 Windows,MongoDB 不支持加密的 PEM 文件。如果 mongod 遇到加密的 PEM 文件,则无法启动。要在 Windows 上安全地存储和访问用于成员身份验证的证书,请使用 --tlsClusterCertificateSelector

--tlsCertificateSelector <parameter>=<value>

注意

在 Windows 和 macOS 上可用,作为 --tlsCertificateKeyFile 的替代方案。

指定一个属性以从操作系统的证书存储中选择匹配的证书用于 TLS。

选项 --tlsCertificateKeyFile--tlsCertificateSelector 是互斥的。您只能指定其中一个。

--tlsCertificateSelector 接受格式为 <property>=<value> 的参数,其中属性可以是以下之一

属性
值类型
描述
subject
ASCII 字符串
证书上的主题名称或常见名称
指纹
十六进制字符串

一系列字节,以十六进制形式表示,用于通过其SHA-1摘要识别公钥。

指纹有时也被称为指纹

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

mongod在操作系统的安全证书存储中搜索用于验证指定TLS证书完整证书链的CA证书。具体来说,安全证书存储必须包含根CA证书以及构建到TLS证书的完整证书链所需的任何中间CA证书。请不要使用--tlsCAFile--tlsClusterCAFile来指定根和中间CA证书

例如,如果TLS/SSL证书由单个根CA证书签名,则安全证书存储必须包含该根CA证书。如果TLS/SSL证书由中间CA证书签名,则安全证书存储必须包含中间CA证书和根CA证书。

注意

当使用net.tls.certificateSelector--tlsCertificateSelector设置为指纹时,您不能使用rotateCertificates命令或db.rotateCertificates()shell方法

--tlsClusterCertificateSelector <参数>=<值>

注意

Windows和macOS上提供,作为--tlsClusterFile的替代方案。

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

--tlsClusterFile--tlsClusterCertificateSelector选项是互斥的。您只能指定一个。

--tlsClusterCertificateSelector 接受格式为 <属性>=<值> 的参数,其中属性可以是以下之一

属性
值类型
描述
subject
ASCII 字符串
证书上的主题名称或常见名称
指纹
十六进制字符串

一系列字节,以十六进制形式表示,用于通过其SHA-1摘要识别公钥。

指纹有时也被称为指纹

mongod 在操作系统的安全证书存储中搜索用于验证指定集群证书完整证书链的CA证书。具体来说,安全证书存储必须包含根CA证书以及构建到集群证书的完整证书链所需的任何中间CA证书。**不要**使用 --tlsCAFile--tlsClusterCAFile 来指定根和中间CA证书。

例如,如果集群证书由单个根CA证书签名,则安全证书存储必须包含该根CA证书。如果集群证书由中间CA证书签名,则安全证书存储必须包含中间CA证书**和**根CA证书。

mongodmongos 如果连接的 x.509 证书在 30 天内到期,则会记录一个警告。

--tlsClusterPassword <值>

指定用于解密与 --tlsClusterFile 指定的x.509证书-密钥文件的密码。只有当证书-密钥文件被加密时才使用 --tlsClusterPassword 选项。在任何情况下,mongod 都会将密码从所有日志和报告输出中删除。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsCAFile <filename>

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

重要

当使用 TLS/SSL 启用的 mongod 实例时,必须指定 --tlsCAFile 标志、TLS/SSL 配置 选项或 net.tls.CAFile 配置选项的值。

--tlsCAFiletls.CAFiletlsUseSystemCA 互斥。

仅限 Windows/macOS
如果使用 --tlsCertificateSelector 和/或 --tlsClusterCertificateSelector,请不要使用 --tlsCAFile 来指定根和中间 CA 证书。将所有用于验证 --tlsCertificateSelector 和/或 --tlsClusterCertificateSelector 证书完整信任链所需的 CA 证书存储在安全的证书存储中。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsClusterCAFile <filename>

指定包含用于验证客户端建立连接时提交的证书的证书颁发机构(root CA)的根证书链的 .pem 文件。使用相对路径或绝对路径指定 .pem 文件的文件名。使用 --tlsClusterCAFile 需要设置 --tlsCAFile

如果 --tlsClusterCAFile 没有指定用于验证客户端建立连接的证书的 .pem 文件,则集群将使用 --tlsCAFile 选项中指定的 .pem 文件。

--tlsClusterCAFile 允许您使用不同的证书颁发机构来验证 TLS 握手的客户端到服务器和服务器到客户端部分。

仅限 Windows/macOS
如果使用 --tlsCertificateSelector 和/或 --tlsClusterCertificateSelector,请勿使用 --tlsClusterCAFile 来指定根和中间 CA 证书。将所有用于验证 --tlsCertificateSelector 和/或 --tlsClusterCertificateSelector 证书完整信任链所需的 CA 证书存储在安全的证书存储中。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsCRLFile <filename>

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

注意

  • 在 macOS 上无法指定 CRL 文件。相反,您可以使用系统 SSL 证书存储,该存储使用 OCSP(在线证书状态协议)来验证证书的吊销状态。有关使用系统 SSL 证书存储的信息,请参阅 --tlsCertificateSelector

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

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsAllowInvalidCertificates

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

注意

当使用 x.509 认证并指定 --tlsAllowInvalidCertificatestls.allowInvalidCertificates: true 时,无效证书仅足以建立 TLS 连接,但对于认证来说是 不足的

使用 --tlsAllowInvalidCertificates 设置时,MongoDB 会记录关于使用无效证书的警告。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsAllowInvalidHostnames

在连接到副本集或分片集群的其他成员以进行进程间身份验证时,禁用 TLS 证书中主机名的验证。这允许 mongod 连接到其他成员,即使它们的证书中的主机名与它们的配置主机名不匹配。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsAllowConnectionsWithoutCertificates

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

  • 对于未提供证书的客户端,mongodmongos将加密TLS/SSL连接,假设连接成功建立。

  • 对于提供证书的客户端,mongod使用由--tlsCAFile指定的根证书链进行证书验证,并拒绝无效证书的客户端。

如果您有一个包含未向mongod提供或无法提供证书的客户端的混合部署,请使用--tlsAllowConnectionsWithoutCertificates选项。

有关 TLS 和 MongoDB 的更多信息,请参阅 配置 mongodmongos 以使用 TLS/SSL客户端的 TLS/SSL 配置

--tlsDisabledProtocols <protocol(s)>

防止运行TLS的MongoDB服务器接受使用特定协议或协议的传入连接。要指定多个协议,请使用逗号分隔的协议列表。

--tlsDisabledProtocols识别以下协议:TLS1_0TLS1_1TLS1_2TLS1_3

  • 在macOS上,您不能禁用TLS1_1并同时启用TLS1_0TLS1_2。您必须禁用这两个中的至少一个,例如,TLS1_0,TLS1_1

  • 要列出多个协议,请指定逗号分隔的协议列表。例如TLS1_0,TLS1_1

  • 指定一个未识别的协议将阻止服务器启动。

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

如果系统上提供了TLS 1.1+,MongoDB将禁用TLS 1.0的使用。要启用禁用的TLS 1.0,请指定none--tlsDisabledProtocols

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

提示

另请参阅

--tlsFIPSMode

指示mongod使用TLS库的FIPS模式。您的系统必须有一个符合FIPS规范的库才能使用--tlsFIPSMode选项。

注意

兼容FIPS的TLS/SSL仅在MongoDB Enterprise中可用。有关更多信息,请参阅为FIPS配置MongoDB

--profile <level>

默认: 0

配置数据库分析器的级别。以下分析器级别可用:

0
分析器已关闭,不收集任何数据。这是默认的分析器级别。
1

分析器收集超过 slowms 阈值或匹配指定 过滤器 的操作数据。

当设置过滤器时

  • 不使用 slowmssampleRate 选项进行分析。

  • 分析器仅捕获匹配 过滤器 的操作。

2
分析器收集所有操作的数据。

警告

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

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

--slowms <integer>

默认: 100

慢操作时间阈值,以毫秒为单位。运行时间超过此阈值的操作被认为是 慢操作

基于 workingMillis 记录慢操作,这是 MongoDB 在该操作上花费的时间量。这意味着等待锁和流量控制等因素不影响操作是否超过慢操作阈值。

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

在高 logLevel 设置下,所有操作都显示在诊断日志中,除非以下例外:次级仅记录慢操作日志条目;提高 logLevel 并不记录所有操作日志条目。

对于 mongod 实例,--slowms 影响诊断日志,如果启用,则影响分析器。

提示

另请参阅

--slowOpSampleRate <double>

默认: 1.0

应该进行性能分析或记录的 操作的比例。 --slowOpSampleRate 接受 0 和 1 之间的值,包括 0 和 1。

--slowOpSampleRate 不会影响副本集次要成员的慢操作日志条目记录。次要成员会记录所有耗时超过慢操作阈值的操作日志条目,无论是否设置了 --slowOpSampleRate

对于 mongod 实例,--slowOpSampleRate 影响诊断日志,如果启用,则影响性能分析器。

--auditCompressionMode

新功能在版本5.3.

指定审计日志加密的压缩模式。您还必须通过使用以下任一选项来启用审计日志加密:--auditEncryptionKeyUID--auditLocalKeyFile

--auditCompressionMode 可以设置为以下值之一

描述
zstd
使用 zstd 算法压缩审计日志。
none (默认)
不压缩审计日志。

注意

仅适用于 MongoDB Enterprise。MongoDB Enterprise 和 Atlas 的配置要求不同。

--auditDestination

启用 审计 并指定 mongod 将所有审计事件发送到何处。

--auditDestination 可以有以下值之一

描述
syslog

以 JSON 格式将审计事件输出到 syslog。在 Windows 上不可用。审计消息具有 info 的 syslog 严重级别和 user 的设施级别。

syslog 消息限制可能导致审计消息被截断。审计系统不会检测截断,也不会在截断发生时出错。

console
以 JSON 格式将审计事件输出到 stdout
file
以指定在 --auditPath 的文件中,并按照 --auditFormat 指定的格式输出审计事件。

注意

仅适用于 MongoDB EnterpriseMongoDB Atlas

--auditEncryptionKeyUID

新功能在版本6.0.

指定用于审计日志加密的密钥管理互操作性协议(KMIP)密钥的唯一标识符。

不能同时使用--auditEncryptionKeyUID--auditLocalKeyFile

注意

仅适用于 MongoDB Enterprise。MongoDB Enterprise 和 Atlas 的配置要求不同。

--auditFormat

--auditDestination设置为file时,指定审计输出文件的格式。选项--auditFormat可以有以下值之一

描述
JSON
以JSON格式将审计事件输出到由--auditPath指定的文件。
BSON
以BSON二进制格式将审计事件输出到由--auditPath指定的文件。

将审计事件以JSON格式输出到文件会降低服务器性能,比以BSON格式输出到文件降低更多。

注意

仅适用于 MongoDB EnterpriseMongoDB Atlas

--auditLocalKeyFile

新功能在版本5.3.

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

注意

仅用于测试时使用--auditLocalKeyFile,因为密钥未得到安全保护。为了保护密钥,请使用--auditEncryptionKeyUID和外部密钥管理系统互操作性协议(KMIP)服务器。

不能同时使用--auditLocalKeyFile--auditEncryptionKeyUID

注意

仅适用于 MongoDB Enterprise。MongoDB Enterprise 和 Atlas 的配置要求不同。

--auditPath

如果--auditDestination的值为file,则指定审计输出的文件。选项--auditPath可以接受完整路径名或相对路径名。

注意

仅适用于 MongoDB EnterpriseMongoDB Atlas

--auditFilter

指定用于限制操作类型审计系统记录的过滤器。该选项接受以下形式的查询文档的字符串表示:

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

<field>可以是审计消息中的任何字段,包括param文档中返回的字段。 <expression>是一个查询条件表达式

要指定审计过滤器,请将过滤器文档放在单引号内,以将文档作为字符串传递。

要在配置文件中指定审计过滤器,必须使用配置文件的YAML格式。

注意

仅适用于 MongoDB EnterpriseMongoDB Atlas

--auditSchema

默认值: mongo

新功能在版本8.0.

指定用于审计日志的格式。对于--auditSchema,您可以指定以下值之一:

描述
mongo

日志以MongoDB设计的格式编写。

例如,有关日志消息的详细信息,请参阅Mongo Schema Audit Messages。

OCSF

日志以OCSF格式编写。此选项提供与日志处理器兼容的标准格式日志。

例如,有关日志消息的详细信息,请参阅OCSF Schema Audit Messages。

--inMemorySizeGB <浮点数>

默认值:物理内存的50%减去1GB。

为内存存储引擎分配的最大内存量,包括索引、操作日志(如果mongod是复制集的一部分)、分片集群元数据等。

值可以从256MB到10TB不等,可以是浮点数。

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

注意

企业级特性

仅适用于 MongoDB 企业版。

--enableEncryption

默认值:false

启用WiredTiger存储引擎的加密。必须启用此选项才能传入加密密钥和配置。

注意

企业级特性

仅适用于 MongoDB 企业版。

--encryptionCipherMode <string>

默认值: AES256-CBC

用于静态加密的加密模式

模式
描述
AES256-CBC
256位高级加密标准在密文块链模式
AES256-GCM

256位高级加密标准在Galois/Counter模式

仅在Linux上可用。

MongoDB企业版在Windows上不再支持AES256-GCM作为静态加密的块加密。此用法仅在Linux上受支持。

注意

企业级特性

仅适用于 MongoDB 企业版。

--encryptionKeyFile <string>

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

密钥文件只能包含一个密钥。密钥是一个16或32字符的字符串。

需要--enableEncryption.

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipKeyIdentifier <string>

KMIP服务器中现有密钥的唯一标识符。包含以使用与标识符关联的密钥作为系统密钥。您只能在首次为mongod实例启用加密时使用此设置。需要--enableEncryption

如果未指定,MongoDB将请求KMIP服务器创建一个新密钥来作为系统密钥使用。

如果KMIP服务器无法找到指定标识符的密钥或数据已经使用密钥加密,MongoDB将抛出错误。

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipRotateMasterKey <boolean>

默认值:false

如果为true,则旋转主密钥并重新加密内部密钥库。

注意

企业级特性

仅适用于 MongoDB 企业版。

提示

另请参阅

--kmipServerName <string>

连接到的KMIP服务器的主机名或IP地址。需要--enableEncryption

您可以指定多个KMIP服务器,以逗号分隔的列表形式,例如:server1.example.com,server2.example.com。在启动时,mongod将按照列表顺序尝试连接到每个服务器,并选择第一个能够成功建立连接的服务器。KMIP服务器选择仅在启动时发生。

当连接到KMIP服务器时,mongod会验证指定的--kmipServerName是否与KMIP服务器提供的证书中的主题备用名称(Subject Alternative Name, SAN)匹配(或者如果不存在SAN,则匹配通用名称Common Name, CN)。如果存在SAN,mongod不会与CN匹配。如果主机名与SAN(或CN)不匹配,mongod将无法连接。

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

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipPort <number>

默认: 5696

用于与KMIP服务器通信的端口号。需要--kmipServerName。需要--enableEncryption

如果使用--kmipServerName指定多个KMIP服务器,mongod将使用--kmipPort指定的端口号连接所有提供的KMIP服务器。

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipConnectRetries <数字>

默认: 0

重试连接 KMIP 服务器初始连接的次数。与 --kmipConnectTimeoutMS 结合使用,以控制 mongod 在每次重试之间等待响应的时间。

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipConnectTimeoutMS <数字>

默认: 5000

等待 KMIP 服务器响应的超时时间(毫秒)。如果指定了 --kmipConnectRetries 设置,则 mongod 在重试之间等待指定的时间间隔。

值必须为 1000 或更大。

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipClientCertificateSelector <字符串>

新功能在版本5.0: 在 Windows 和 macOS 上可用,作为 --kmipClientCertificateFile 的替代方案。

--kmipClientCertificateFile--kmipClientCertificateSelector 选项互斥。您只能指定一个。

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

--kmipClientCertificateSelector接受格式为<属性>=<值>的参数,其中属性可以是以下之一

属性
值类型
描述
subject
ASCII 字符串
证书上的主题名称或常见名称
指纹
十六进制字符串

一系列字节,以十六进制形式表示,用于通过其SHA-1摘要识别公钥。

指纹有时也被称为指纹

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipClientCertificateFile <字符串>

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

要使用此选项,您还必须指定--kmipServerName选项。

重要

当使用--kmipClientCertificateFile且KMIP服务器强制执行TLS 1.2时,在Windows上启用使用KMIP服务器的加密将失败。

要在Windows上使用KMIP启用静态加密,您必须

注意

在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。请参阅--kmipClientCertificateSelector

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipClientCertificatePassword <字符串>

解密连接到KMIP服务器的客户端证书私钥的密码。此选项用于验证MongoDB对KMIP服务器的身份验证,并要求您提供--kmipClientCertificateFile

注意

企业级特性

仅适用于 MongoDB 企业版。

--kmipServerCAFile <string>

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

注意

在macOS或Windows上,您可以使用操作系统安全存储中的证书,而不是PEM密钥文件。参见--kmipClientCertificateSelector。在使用安全存储时,您不需要,但也可以指定--kmipServerCAFile

--kmipActivateKeys <boolean>

默认值: true

新功能在版本5.3.

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

--kmipActivateKeys设置为true且您在KMIP服务器上已有现有密钥时,必须首先激活该密钥,否则mongod节点将无法启动。

如果mongod使用的密钥转换为非活动状态,则mongod节点将关闭,除非kmipActivateKeys设置为false。为确保您有一个活动的密钥,请使用--kmipRotateMasterKey旋转KMIP主密钥。

--kmipKeyStatePollingSeconds <整数>

默认值: 900秒

新功能在版本5.3.

以秒为单位的频率,在哪个频率上 mongod 查询 KMIP 服务器以获取活动密钥。

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

--kmipUseLegacyProtocol <布尔值>

默认值:false

新功能在版本7.0: (和 6.0.6)

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

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

--eseDatabaseKeyRollover

轮换使用 AES256-GCM 加密配置的 加密存储引擎 数据库密钥。

当以此选项启动 mongod 实例时,实例将轮换密钥并退出。

注意

企业级特性

仅适用于 MongoDB 企业版。

返回

MongoDB 包组件