Synopsis
mongod 是 MongoDB 系统的主守护进程,处理数据请求、管理数据访问权限并执行后台管理操作。
本文档提供mongod的所有命令行选项的完整概述。 这些命令行选项主要用于测试:在常用操作中,使用配置文件选项控制数据库的行为。
注意
MongoDB 在支持 TLS 1.1+ 的系统上禁用对 TLS 1.0 加密的支持。
兼容性
在以下环境中托管的部署使用 mongod:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
MongoDB Atlas 托管所有 MongoDB Atlas 部署的 mongod。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
Considerations
mongod包括全时诊断数据捕获机制,可协助 MongoDB 工程师对部署进行故障排除。如果该线程失败,它将终止原始进程。为了避免出现最常见的故障,请确认运行该进程的用户有权创建 FTDCdiagnostic.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配置选项。
核心选项
--auth启用授权以控制用户对数据库资源和操作的访问。启用授权后,MongoDB 要求所有客户端先进行身份验证,以确定各客户端对应的访问权限。
如要配置用户,请使用
mongosh客户端。如果用户不存在,则本地主机接口可以访问数据库,直到您创建第一个用户。有关详细信息,请参阅安全性。
--bind_ip <hostnames|ipaddresses|Unix domain socket paths>默认值:localhost
mongod应侦听客户端连接的主机名和/或 IP 地址和/或完整 Unix 域套接字路径。您可以将mongod连接到任何接口。要绑定到多个地址,输入以逗号分隔的值列表。例子
localhost,/tmp/mongod.sock
您可以指定 IPv4 和 IPv6 解决方案,或解析为 IPv4 或 IPv6 地址的主机名。
例子
localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513
注意
如果指定链接本地 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或星号"*"(将星号括在引号中以避免文件名模式扩展)。或者您可以使用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如果使用 启动,则仅支持6--ipv6IPv 。单独指定--bind_ip_all并不能启用 IPv 6支持。警告
将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证和强化网络基础设施。
有关 IP 绑定的更多信息,请参阅自托管部署中的 IP 绑定文档。
或者,您可以将
--bind_ip选项设置为::,0.0.0.0或星号"*"(将星号括在引号中以避免文件名模式扩展)。注意
--bind_ip和--bind_ip_all是互斥的。也就是说,您可以指定其中之一,但不能同时指定两者。
--clusterIpSourceAllowlist <string>版本 5.0 中的新增功能。
IP地址/CIDR(无类域间路由)范围列表,
mongod根据这些地址/CIDR 范围验证来自副本集其他成员以及mongos实例(如果属于分片集群)的身份验证请求。mongod验证源IP是否明确位于列表中或属于列表中的 CIDR范围。如果IP解决不存在,则服务器不对mongod或mongos进行身份验证。--clusterIpSourceAllowlist对未经身份验证启动的mongod没有影响。--clusterIpSourceAllowlist接受多个以逗号分隔的 IPv4/6 地址或无类别域间路由 (CIDR) 范围:mongod --clusterIpSourceAllowlist 192.0.2.0/24,127.0.0.1,::1 重要
确保
--clusterIpSourceAllowlist包含 IP 地址或 CIDR 范围,其中包括部署中每个副本集节点或mongos的 IP 地址,以确保集群组件之间的正常通信。
--config <filename>, -f <filename>指定运行时配置选项的配置文件。 配置文件是运行时配置
mongod的首选方法。 这些选项相当于命令行配置选项。 有关更多信息,请参阅自管理配置文件选项。确保配置文件使用 ASCII 编码。
mongod实例不支持非 ASCII 编码的配置文件,包括 UTF-8。
--configExpand <none|rest|exec>默认:无
启用在配置文件中使用扩展指令。扩展指令允许您为配置文件选项设置外部来源的值。
--configExpand支持以下扩展指令:值说明none默认。
mongod不扩展扩展指令。如果任何配置文件设置使用扩展指令,mongod将无法启动。restmongod解析配置文件时扩展__rest扩展指令。execmongod解析配置文件时扩展__exec扩展指令。您可以将多个扩展指令指定为以逗号分隔的列表,例如:
rest, exec。如果配置文件包含未指定为--configExpand的扩展指令,mongod会返回错误并终止。有关扩展指令的更多信息,请参阅配置文件的自管理部署的源自外部的配置文件值。
--filePermissions <path>默认值:
0700设置 UNIX 域套接字文件的权限。
--filePermissions仅适用于基于 Unix 的系统。
--fork启用后台运行
mongod进程的守护进程模式。--fork选项在 Windows 系统上不受支持。默认情况下,
mongod不作为守护进程运行。您可以使用--fork或处理守护进程的控制进程将mongod作为守护进程运行,例如upstart或systemd。要使用
--fork,通过以下方法之一配置mongod的日志输出:
--ipv6启用 IPv6 支持。默认情况下,
mongod禁用 IPv6 支持。设置
--ipv6不会指示mongod侦听任何本地 IPv6 地址或接口。要将mongod配置为侦听 IPv6 接口,您必须:使用一个或多个 IPv6 地址或解析为 IPv6 地址的主机名配置
--bind_ip,或将
--bind_ip_all设为true。
--keyFile <file>指定密钥文件的路径,该文件存储MongoDB实例用于在分片分片集群或副本集相互验证的共享密钥。
--keyFile意味着--auth。 有关更多信息,请参阅自管理内部/成员身份验证。用于内部成员身份验证的密钥文件使用 YAML 格式,允许在密钥文件中包含多个密钥。YAML 格式接受以下任一形式:
单个密钥字符串(与早期版本相同)
键字符串序列
YAML 格式与使用文本文件格式的现有单密钥文件兼容。
--listenBacklog <number>默认值:目标系统
SOMAXCONN常量监听队列中可以存在的最大连接数。
警告
在使用此参数之前,请查阅本地系统的文档以了解限制条件和配置要求。
重要
要防止出现未定义行为,为此参数指定一个介于
1和本地系统SOMAXCONN常量之间的值。listenBacklog参数的默认值在编译时设置为目标系统SOMAXCONN常量。SOMAXCONN是为侦听系统调用的积压参数记录的最大有效值。某些系统可能会以符号的形式解释
SOMAXCONN,而另一些系统则以数字方式解释。实践中应用的实际侦听积压可能与SOMAXCONN常量或--listenBacklog参数的任何数字解释不同,并且还可能受到 Linux 上的net.core.somaxconn等系统设置的限制。根据标准的规定,为
listenBacklog参数传递超过本地系统SOMAXCONN常量的值是未定义行为。较高的值可能会被默默地整数截断、可能被忽略、可能导致意外资源消耗,或者产生不利后果。在工作负载出现连接峰值的系统上,经验证本地系统能够支持比
SOMAXCONN常量更高的积压参数值,通过减少被迫进入回退状态的连接次数,将listenBacklog参数设置为更高的值可能会减少客户端观察到的操作延迟。
--logpath <path>将所有诊断日志记录信息发送到日志文件中,而不是标准输出或主机的系统日志系统。MongoDB 在您指定的路径创建日志文件。
默认情况下,MongoDB 会移动任何现有日志文件而不是覆盖它。要改为追加到日志文件,请设置
--logappend选项。
--logRotate <string>默认:重命名
确定轮换服务器日志和/或审核日志时
logRotate命令的行为。指定rename或reopen:rename对日志文件进行重命名。reopen按照典型的 Linux/Unix 日志轮换行为关闭并重新打开日志文件。使用 Linux/Unix logrotate 实用程序时使用reopen避免日志丢失。如果指定
reopen,那么您还必须使用--logappend。
--maxConns <number>mongod接受的最大并行连接数。如果该设置高于操作系统配置的最大连接跟踪阈值,则该设置无效。不要为此选项分配过低的值,否则会在正常的应用程序操作期间遇到错误。
--networkMessageCompressors <string>Default: snappy,zstd,zlib
指定默认压缩程序用于此
mongod实例与以下对象之间的通信:部署的其他成员(如果实例是副本集或分片集群的一部分)
支持
OP_COMPRESSED消息格式的驱动程序。
MongoDB 支持以下压缩程序:
注意
mongod和mongos实例按该顺序均默认为snappy,zstd,zlib压缩器。要禁用网络压缩,请将值设置为
disabled。重要
当双方都启用网络压缩时,消息就会被压缩。否则,各方之间的消息不会被压缩。
如果指定多个压缩程序,则列出压缩程序的顺序与通信发起者都很重要。例如,如果
mongosh指定以下网络压缩程序zlib,snappy且mongod指定snappy,zlib,则mongosh与mongod之间的消息使用zlib。如果各方未分享至少一个通用压缩程序,则各方之间的消息将不会被压缩。例如,如果
mongosh指定网络压缩程序zlib且mongod指定snappy,则mongosh与mongod之间的消息将不会被压缩。
--notablescan禁止需要集合扫描的操作。更多信息,请参阅
notablescan。
--nounixsocket禁用 UNIX 域套接字上的侦听。
--nounixsocket仅适用于基于 Unix 的系统。mongod进程始终侦听 UNIX 套接字,除非满足以下任一条件:--nounixsocket已设置net.bindIp未设置net.bindIp未指定localhost或其相关 IP 地址
mongod在 Debian 上安装 MongoDB Community Edition 和在 Red Hat 或 CentOS 上安装 MongoDB Community Edition 的官方软件包默认将bind_ip配置设置为127.0.0.1。
--outputConfig将
mongod实例的配置选项(采用 YAML 格式)输出到stdout并退出mongod实例。 对于使用来自外部的配置文件值进行自我管理的部署的配置选项,--outputConfig返回这些选项的解析值。警告
这可能包括之前通过外部来源进行模糊处理的任何配置的密码或密钥。
有关用法示例,请参阅:
--pidfilepath <path>指定文件位置以存储
mongod进程的进程 ID (PID)。运行mongod或mongos进程的用户必须能够写入此路径。如果未指定--pidfilepath选项,进程不会创建 PID 文件。该选项通常只能与--fork选项结合使用。注意
Linux
在 Linux 上,PID 文件管理通常由发行版的初始化系统负责:一般是
/etc/init.d目录中的服务文件,或者是使用systemctl注册的 systemd 单元文件。仅当您未使用这些初始化系统时,才使用--pidfilepath选项。有关更多信息,请参阅操作系统的相关安装指南。注意
macOS
在 macOS 上,PID 文件管理通常由
brew处理。仅当在 macOS 系统上未使用brew时,才使用--pidfilepath选项。有关更多信息,请参阅适用于您操作系统的相应《安装指南》。
--port <port>默认值:
27017,如果
mongod不是分片成员或配置服务器成员27018 如果
mongod是shard member27019 如果
mongod是config server member
MongoDB 实例监听客户端连接的 TCP 端口。
在版本 7.0.3 中更改:
--port选项接受0和65535之间的值范围。将端口设置为0会将mongod配置为使用操作系统分配的任意端口。
--quiet在尝试限制输出量的安静模式下运行
mongod。该选项会抑制:
数据库命令输出
复制活动
连接接受事件
连接关闭事件
--redactClientLogData仅在 MongoDB Enterprise 中可用。
使用
--redactClientLogData运行的mongod会在登录之前编辑与给定日志事件相关的任何消息。这可以防止mongod将数据库中存储的潜在敏感数据写入诊断日志。错误或操作代码、行号和源文件名等元数据在日志中仍然可见。将
--redactClientLogData与静态加密和 TLS/SSL(传输加密)结合使用,以帮助符合监管要求。例如,MongoDB 部署可能会将个人身份信息 (PII) 存储在一个或多个集合中。
mongod日志事件,例如与增删改查操作、分片元数据等。mongod可能会公开 PII 作为这些日志记录操作的一部分。通过--redactClientLogData运行的mongod会在输出到日志之前删除与这些事件相关的任何消息,从而有效地删除了 PII。由于缺少与日志事件相关的数据,对使用
--redactClientLogData运行的mongod进行诊断可能会更加困难。有关--redactClientLogData对日志输出影响的示例,请参阅进程日志记录手册页面。在运行中的
mongod上,使用setParameter与redactClientLogData参数配置此设置。
--setParameter <options>指定用于自托管部署的MongoDB Server参数 中描述的MongoDB参数之一。 您可以指定多个
setParameter字段。
--shutdown--shutdown选项可以完全、彻底地终止mongod进程。使用此选项调用mongod时,您必须直接或通过配置文件和--config选项来设置--dbpath选项。--shutdown选项仅适用于 Linux 系统。有关关闭的其他方法,另请参阅 停止
mongod进程。
--syslog将所有日志记录输出发送到主机的 syslog 系统,而不是发送到标准输出或日志文件 (
--logpath)。--syslog选项在 Windows 上不受支持。警告
syslog守护进程在记录消息时生成时间戳,而不是在 MongoDB 发出消息时生成时间戳。这可能会导致日志条目的时间戳产生误导,尤其是当系统负载较重时。我们建议对生产系统使用--logpath选项,以确保时间戳的准确性。MongoDB 将该组件包含在其发往
syslog的日志消息中。... ACCESS [repl writer worker 5] Unsupported modification to roles collection ...
--syslogFacility <string>默认:用户
指定将消息记录到系统日志时使用的设施级别。您指定的值必须受操作系统的系统日志实现支持。要使用该选项,必须启用
--syslog选项。
--timeStampFormat <string>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注意
--timeStampFormat不再支持ctime。ctime格式日期的示例为:Wed Dec 31 18:17:54.811。
--timeZoneInfo <path>加载时区数据库的完整路径。如果未提供此选项,则 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 中创建不准确的时区转换。要在 5.0 之前的 MongoDB 版本中显式链接到时区数据库,请下载时区数据库。并使用
timeZoneInfo参数。
--transitionToAuth允许
mongod接受和创建与部署中其他mongod和mongos实例之间的经过身份验证和未经身份验证的连接。用于执行副本集或分片集群从无身份验证配置到内部身份验证的滚动过渡。需要指定内部身份验证验证机制,如--keyFile。例如,如果使用密钥文件进行内部身份验证,
mongod会使用匹配的密钥文件与部署中的任何mongod或mongos创建经身份验证的连接。如果安全机制不匹配,则mongod将改用未经身份验证的连接。使用
--transitionToAuth运行的mongod不会强制实施用户访问控制。用户无需任何访问控制检查即可连接到您的部署并执行读取、写入和管理操作。注意
使用内部身份验证且不使用
--transitionToAuth运行的mongod要求客户端使用用户访问控制进行连接。更新客户端以在重新启动mongod之前使用适当的用户连接到mongod,而无需--transitionToAuth。
--unixSocketPrefix <path>默认:/tmp
UNIX 套接字的路径。
--unixSocketPrefix仅适用于基于 Unix 的系统。如果此选项没有值,则
mongod进程将创建一个以/tmp作为前缀的套接字。MongoDB 创建并侦听 UNIX 套接字,除非满足以下条件之一:net.unixDomainSocket.enabledisfalse--nounixsocket已设置net.bindIp未设置net.bindIp未指定localhost或其相关 IP 地址
--verbose, -v增加标准输出或日志文件中返回的内部报告数量。通过多次包含该选项,可以使用
-v形式增加详细程度,例如:-vvvvv。注意
从版本 4.2 开始,MongoDB 在日志消息中包含调试详细级别(1 至 5 级)。例如,如果详细级别为 2,则 MongoDB 记录
D2。在以前版本中,MongoDB 日志消息仅为调试级别指定D。
LDAP 身份验证或授权选项
--ldapServers <host1>:<port>,<host2>:<port>,...,<hostN>:<port>仅在 MongoDB Enterprise 中可用。
特定 LDAP 服务器,
mongod在该服务器上对用户进行身份验证或决定授权用户可对给定数据库执行哪些操作。如果指定的 LDAP 服务器有任何复制的实例,则可以在逗号分隔的列表中指定每个复制的服务器的主机和端口。如果您的LDAP基础架构将LDAP目录分区到多个LDAP服务器,请将一个LDAP服务器或其任何复制实例指定为
--ldapServers。MongoDB支持以下LDAP引用,如 RFC 4511 4.1。10 中所定义。请勿使用--ldapServers列出基础架构中的每台LDAP服务器。可以在运行中的
mongod上配置此设置,但需使用setParameter。如果未设置,
mongod无法使用 LDAP 身份验证或授权。
--ldapValidateLDAPServerConfig <boolean>在 MongoDB Enterprise 中可用
一个标记,其确定
mongod实例是否在启动时检查LDAP server(s)的可用性:如果为
true,则mongod实例执行可用性检查,并且仅在 LDAP 服务器可用时才继续启动。如果为
false,则mongod实例将跳过可用性检查;也就是说,即使 LDAP 服务器不可用,实例也会启动。
--ldapQueryUser <string>仅在 MongoDB Enterprise 中可用。
mongod连接到 LDAP 服务器或在该服务器上执行查询时所绑定的身份。仅当满足以下任一条件时才需要:
使用 LDAP 授权。
将 LDAP 查询用于
username transformationLDAP 服务器不允许匿名绑定
您必须使用
--ldapQueryUser和--ldapQueryPassword。如果未设置,则
mongod不会尝试绑定到 LDAP 服务器。可以在运行中的
mongod上配置此设置,但需使用setParameter。注意
Windows MongoDB 部署可以使用
--ldapBindWithOSDefaults而不是--ldapQueryUser和--ldapQueryPassword。不能同时指定--ldapQueryUser和--ldapBindWithOSDefaults。
仅在 MongoDB Enterprise 中可用。
使用 --ldapQueryUser 时用于绑定到 LDAP 服务器的密码。您必须使用 --ldapQueryPassword 与 --ldapQueryUser。
如果未设置,则 mongod 不会尝试绑定到 LDAP 服务器。
您可以使用 setParameter 在运行中的 mongod 配置此设置。
ldapQueryPassword setParameter 命令接受字符串或字符串数组。如果将 ldapQueryPassword 设置为数组,则 MongoDB 会按顺序尝试每个密码,直到成功为止。使用大量密码滚动 LDAP 帐户密码,无需停机。
注意
Windows MongoDB 部署可以使用 --ldapBindWithOSDefaults 而不是 --ldapQueryUser 和 --ldapQueryPassword。不能同时指定 --ldapQueryPassword 和 --ldapBindWithOSDefaults。
--ldapBindWithOSDefaults <bool>默认:false
仅在 Windows 平台上的 MongoDB Enterprise 中可用。
在连接 LDAP 服务器时,允许
mongod使用您的 Windows 登录档案进行身份验证或绑定。仅在以下情况下才需要:
使用 LDAP 授权。
将 LDAP 查询用于
username transformationLDAP 服务器不允许匿名绑定
使用
--ldapBindWithOSDefaults替换--ldapQueryUser和--ldapQueryPassword。
--ldapBindMethod <string>默认值:简单
仅在 MongoDB Enterprise 中可用。
mongod用于对 LDAP 服务器进行身份验证的方法。与--ldapQueryUser和--ldapQueryPassword一起使用以连接到 LDAP 服务器。--ldapBindMethod支持以下值:simple-mongod使用简单身份验证。saslmongod使用 SASL 协议进行身份验证
如果指定
sasl,则可以使用--ldapBindSaslMechanisms配置可用的 SASL 机制。mongod默认使用DIGEST-MD5机制。
--ldapBindSaslMechanisms <string>默认值:DIGEST-MD5
仅在 MongoDB Enterprise 中可用。
以逗号分隔的 SASL 机制列表,
mongod可使用此列表向 LDAP 服务器进行身份验证。mongod和 LDAP 服务器必须就至少一种机制达成一致。mongod可在运行时动态加载主机上安装的任何 SASL 机制库。可在
mongod主机以及远程 LDAP 服务器主机上安装和配置所选 SASL 机制的相应库。默认情况下,操作系统可能包含某些 SASL 库。请遵循与每个 SASL 机制相关的文档来获取有关安装和配置的指南。如果将
GSSAPISASL 机制与自托管部署上的Kerberos身份验证结合使用,请验证mongod托管的以下内容:LinuxKRB5_CLIENT_KTNAME环境变量解析为托管的客户端Linux Keytab 文件的名称。有关Kerberos环境变量的更多信息,请参阅Kerberos文档。客户端密钥表包含供
mongod连接到 LDAP 服务器并执行 LDAP 查询时使用的用户主体。
Windows- 如果连接到 Active Directory 服务器,Windows Kerberos 配置在用户登录系统时会自动生成 Ticket-Granting-Ticket。将
--ldapBindWithOSDefaults设置为true以允许mongod在连接到 Active Directory 服务器时使用生成的凭证并执行查询。
将
--ldapBindMethod设置为sasl以使用此选项。注意
有关 SASL 机制的完整列表,请参阅IANA 列表。请参阅LDAP或 Active Directory 服务的文档来识别与该服务兼容的 SASL 机制。
MongoDB 不是 SASL 机制库的来源,MongoDB 文档也不是安装或配置任何给定 SASL 机制的权威来源。如需获得文档和支持,请咨询 SASL 机制库供应商或所有者。
有关 SASL 的更多信息,请参阅以下资源:
对于 Linux,请参阅 Cyrus SASL 文档。
对于 Windows,请参阅 Windows SASL 文档。
--ldapTransportSecurity <string>默认值:tls
仅在 MongoDB Enterprise 中可用。
默认情况下,
mongod会创建与 LDAP 服务器的 TLS/SSL 安全连接。对于 Linux 部署,必须在
/etc/openldap/ldap.conf文件中配置相应的 TLS 选项。操作系统的程序包管理器通过libldap依赖项创建此文件作为 MongoDB Enterprise 安装的一部分。有关更完整的说明,请参阅 ldap.conf OpenLDAP 文档中的TLS Options。在 Windows 上部署时,必须将 LDAP 服务器 CA 证书添加到 Windows 证书管理工具中。该工具的确切名称和功能可能会因操作系统版本而异。有关证书管理的更多信息,请参阅您的 Windows 版本对应的文档。
将
--ldapTransportSecurity设置为none,可在mongod与 LDAP 服务器之间禁用 TLS/SSL。警告
将
--ldapTransportSecurity设置为none可在mongod和 LDAP 服务器之间传输纯文本信息,可能还传输凭证。
--ldapTimeoutMS <int>默认值:10000
仅在 MongoDB Enterprise 中可用。
mongod应等待 LDAP 服务器响应请求的时间,以毫秒为单位。如果失败的根源是连接超时,增加
--ldapTimeoutMS的值可以防止 MongoDB 服务器和 LDAP 服务器之间的连接失败。降低--ldapTimeoutMS的值会缩短 MongoDB 等待 LDAP 服务器响应的时间。可以在运行中的
mongod上配置此设置,但需使用setParameter。
--ldapUserToDNMapping <string>仅在 MongoDB Enterprise 中可用。
将提供给
mongod进行身份验证的用户名映射到 LDAP 标识名 (DN)。以下情况下,可能需要使用--ldapUserToDNMapping将用户名转换为 LDAP DN:通过 LDAP 简单绑定进行 LDAP 身份验证,其中用户使用非完整 LDAP DN 的用户名向 MongoDB 进行身份验证。
使用需要 DN 的
LDAP authorization query template。使用不同的身份验证机制(如 x.509、kerberos)将向 Mongo DB 进行身份验证的客户端的用户名转换为完整的 LDAP DN,以进行授权。
--ldapUserToDNMapping需要一个用引号括住的 JSON 字符串,代表一个有序的文档数组。每个文档都包含正则表达式match以及用于转换传入用户名的substitution或ldapQuery模板。数组中的每个文档均采用以下形式:
{ match: "<regex>" substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>" } 字段说明例子matchECMAScript 格式的正则表达式 (regex),用于与提供的用户名进行匹配。每个括号括起来的部分表示
substitution或ldapQuery使用的正则表达式捕获组。"(.+)ENGINEERING""(.+)DBA"substitution"cn={0},ou=engineering, dc=example,dc=com"ldapQueryLDAP 查询格式模板,该模板将匹配
match正则表达式的身份验证名称插入到按照 RFC4515 和 RFC4516 编码的 LDAP 查询 URI 中。每个大括号内的数值都替换为相应的正则表达式捕获组,这些捕获组是通过match表达式从身份验证用户名中提取而来的。mongod针对 LDAP 服务器执行查询,以检索经身份验证用户的 LDAP DN。mongod要求只有一个返回结果才能转换成功,也可以通过mongod跳过此转换。"ou=engineering,dc=example, dc=com??one?(user={0})"对于数组中的每个文档,必须使用
substitution或ldapQuery。不能在同一文档中同时指定两者。执行身份验证或授权时,
mongod按给定顺序遍历数组中的每个文档,对照match筛选器检查身份验证用户名。如果发现匹配,mongod就会进行转换,并使用输出结果对用户进行身份验证。mongod不会检查数组中的其余文档。如果给定文档与提供的身份验证名称不匹配,
mongod会继续浏览文档列表以查找其他匹配项。如果在任何文档中均未找到匹配项,或者文档描述的转换失败,mongod将返回错误信息。mongod也会返回错误(如果由于 LDAP 服务器网络或身份验证失败而无法评估某项转换)。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"。如果未设置
--ldapUserToDNMapping,则mongod在尝试通过 LDAP 服务器对用户进行身份验证或授权时,不会对用户名进行转换。可以在运行中的
mongod上配置此设置,但需使用setParameter数据库命令。
--ldapAuthzQueryTemplate <string>仅在 MongoDB Enterprise 中可用。
格式符合 RFC4515 和 RFC4516 的相对LDAP查询URL,
mongod执行该 URL 以获得经过身份验证的用户所属的LDAP群组。该查询相对于--ldapServers中指定的托管或多个主机。在 URL 中,可以使用以下替换令牌:
替换令牌说明{USER}替换经过身份验证的用户名,或者如果指定了 ,则替换为
transformedusername mapping用户名。{PROVIDED_USER}替换提供的用户名,即在身份验证或
LDAP transformation之前。构造查询 URL 时,请确保 LDAP 参数的顺序遵循 RFC4516:
[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ] 如果您的查询包含属性,则
mongod会假定该查询检索此实体所属的 DN。如果查询不包含属性,则
mongod假定该查询检索用户所属的所有实体。对于查询返回的每个 LDAP DN,
mongod都会在admin数据库中为授权用户分配相应的角色。如果admin数据库上的角色与 DN 完全匹配,mongod将向用户授予该角色以及分配给该角色的权限。有关创建角色的更多信息,请参阅db.createRole()方法。例子
此 LDAP 查询返回 LDAP 用户对象的
memberOf属性中列出的所有群组。"{USER}?memberOf?base" 您的 LDAP 配置可能不包含
memberOf属性作为用户架构的一部分,可能具有不同的属性来报告组成员身份,或者可能无法通过属性跟踪组成员身份。根据您自己独特的 LDAP 配置来配置您的查询。如果未设置,
mongod将无法授权用户使用 LDAP。可以在运行中的
mongod上配置此设置,但需使用setParameter数据库命令。
存储选项
--storageEngine string默认值:
wiredTiger指定
mongod数据库的存储引擎。可用值包括:值说明wiredTiger指定 WiredTiger 存储引擎。
inMemory仅在 MongoDB Enterprise 中可用。
如果您尝试使用包含由除
--storageEngine指定的存储引擎生成的数据文件的--dbpath来启动mongod,则mongod不会启动。
--dbpath <path>默认值:Linux 和 macOS 上为
/data/db,Windows 上为\data\dbmongod实例用于存储数据的目录。如果使用 MongoDB 包管理器安装文件中包含的默认配置文件,则相应的
storage.dbPath设置使用不同的默认设置。--dbpath中的文件必须对应于--storageEngine中指定的存储引擎。如果数据文件与--storageEngine不对应,则mongod不会启动。
--directoryperdb使用单独的目录来存储每个数据库的数据。这些目录位于
--dbpath目录下,每个子目录的名称都与数据库名称相对应。从 MongoDB 5.0 开始,启用
--directoryperdb时删除数据库中的最终集合(或删除数据库本身)会删除该数据库的新空子目录。要更改现有部署的
--directoryperdb选项:对于独立运行的实例:
在现有的
mongod实例上使用mongodump来生成备份。停止
mongod实例。添加
--directoryperdb值并配置新的数据目录重新启动
mongod实例。使用
mongorestore填充新数据目录。
对于副本集:
停止从节点成员。
添加
--directoryperdb值并为该从节点成员配置新的数据目录。重启该从节点。
使用初始同步填充新数据目录。
以同样的方式更新剩下的从节点。
降级主节点,并以相同的方式更新降级的成员。
--syncdelay <value>默认:60
控制 MongoDB 将数据刷新到数据文件之前所需的时间。
请勿对生产系统设置此值。几乎在所有情况下,均应使用默认设置。
mongod进程非常快速地将数据写入日志,并延迟写入数据文件。--syncdelay对日志记录没有影响,但如果将--syncdelay设置为0,日志最终会消耗所有可用磁盘空间。为了提供持久性数据,WiredTiger 使用了检查点。 有关详细信息,请参阅《日志和 WiredTiger 存储引擎》。
--upgrade如果需要,请将
--dbpath指定的文件的磁盘数据格式升级到最新版本。如果数据文件采用旧格式,此选项仅影响
mongod的操作。在大多数情况下,不应设置此值,以便最大限度控制升级过程。有关升级过程的更多信息,请参阅 MongoDB 发布说明。
--repair对
mongod实例的所有数据库运行修复例程。从 MongoDB 5.0 开始:
修复操作会验证集合以找到任何不一致之处并在可能的情况下进行修复,从免重建索引。
如果集合的数据文件已被挽救,或者如果集合有验证步骤无法修复的不一致之处,则将重建所有索引。
提示
如果您在启用日志记录功能的情况下运行,则几乎无需运行修复,因为服务器可以使用日志文件将数据文件自动恢复到干净状态。但是,如果需要从磁盘级数据损坏中恢复,则可能需要运行修复。
警告
仅当您没有其他选择时才使用
mongod --repair。该操作会在修复过程中删除且不保存任何损坏的数据。避免对副本集节点运行
--repair:要修复副本集成员,如果您有可用的完整数据副本(例如,最近的备份或副本集的完整成员),请从该完整副本中恢复。 要学习;了解更多信息,请参阅重新同步自管理副本集的成员。
如果您选择对副本集成员运行
mongod --repair,并且该操作会修改数据或元数据,则仍须执行完全重新同步才能使该成员重新加入副本集。
如果因任何原因无法完成修复,您必须使用
--repair选项重启实例。
WiredTiger 选项
--wiredTigerCacheSizeGB <float>定义 WiredTiger 用于所有数据的内部缓存的最大大小。索引构建消耗的内存(请参阅
maxIndexBuildMemoryUsageMegabytes)与 WiredTiger 缓存内存是分开的。取值范围可以从
0.25GB 到10000GB 不等。默认 WiredTiger 内部缓存大小为以下两者中的较大者:
(RAM 大小 - 1 GB)的 50%,或
256 MB.
例如,在总 RAM 为 4GB 的系统上,WiredTiger 缓存使用 1.5GB RAM (
0.5 * (4 GB - 1 GB) = 1.5 GB)。相反,在总 RAM 为 1.25GB 的系统上,WiredTiger 为 WiredTiger 缓存分配了 256 MB,因为这大于总 RAM 的一半减去 1 GB (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实例。如果在容器(如
lxc、cgroups、Docker 等)中运行mongod,而此容器无权访问系统提供的的所有可用 RAM,则必须将--wiredTigerCacheSizeGB设为小于容器中可用 RAM 数量的值。确切的数量取决于容器中运行的其他进程。请参阅memLimitMB。
--wiredTigerDirectoryForIndexes如果使用
--wiredTigerDirectoryForIndexes启动mongod,mongod会将索引和集合存储在数据(即--dbpath) 目录下的不同子单独目录中。具体来说,mongod将索引存储在名为index的子目录中,并将集合数据存储在名为collection的子目录中。您可以使用符号链接,为索引指定不同的位置。具体而言,当
mongod实例未运行时,将index子目录移至目标并在数据目录下创建一个名为index的符号链接,指向新目标。
--wiredTigerCollectionBlockCompressor <compressor>默认值:snappy
指定集合数据的默认压缩类型。创建集合时,您可以针对每个集合覆盖此设置。
可用的压缩类型有:
--wiredTigerCollectionBlockCompressor会影响创建的所有集合。如果在现有 MongoDB 部署上更改--wiredTigerCollectionBlockCompressor的值,则所有新集合都将使用指定的压缩程序。现有集合继续使用创建时指定的压缩程序,或当时的默认压缩程序。
--wiredTigerIndexPrefixCompression <boolean>默认值:true
为索引数据启用或禁用前缀压缩。
为
--wiredTigerIndexPrefixCompression指定true可对索引数据启用前缀压缩,指定false可为索引数据禁用前缀压缩。--wiredTigerIndexPrefixCompression设置会影响创建的所有索引。如果在现有 MongoDB 部署上更改--wiredTigerIndexPrefixCompression的值,则所有新索引都将使用前缀压缩。现有索引不受影响。
复制选项
--replSet <setname>配置复制。指定副本集名称作为该副本集的参数。副本集中的所有主机必须具有相同的设置名称。
如果您的应用程序连接到多个副本集,则每个副本集的名称必须不同。有些驱动程序会按副本集名称对副本集连接进行分组。
--oplogSize <value>oplog 的最大大小(以兆字节为单位)。
oplogSize设置将配置 oplog 的未压缩大小,而不是磁盘上的大小。注意
oplog 的大小可能会超过其配置的大小限制,从而避免删除
majority commit point。默认情况下,
mongod进程会根据最大可用空间量创建一个 oplog。对于 64 位系统,该 oplog 通常占可用磁盘空间的 5%。只要
mongod首次创建了 oplog,更改--oplogSize选项将不会影响 oplog 的大小。要在启动mongod后更改 oplog 的最短保留期,请使用replSetResizeOplog。replSetResizeOplog使您能够动态调整 oplog 的大小,而无需重新启动mongod进程。要在重启后保持使用replSetResizeOplog所做的更改,请更新--oplogSize的值。更多信息,请参阅 Oplog 大小。
--oplogMinRetentionHours <value>指定保留 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 条目保留时,会将系统挂钟与 oplog 条目创建挂钟时间进行比较。集群组件之间的时钟漂移可能会导致意外的 oplog 保留行为。有关跨集群成员的时钟同步的更多信息,请参阅时钟同步。
要在启动
mongod后更改 oplog 的最短保留期,请使用replSetResizeOplog。使用replSetResizeOplog,可以动态调整 oplog 的大小,而无需重新启动mongod进程。若要通过重启来保持使用replSetResizeOplog所做的更改,请更新--oplogMinRetentionHours的值。
--enableMajorityReadConcern默认值:true
配置对
"majority"读关注的支持。从 MongoDB 5.0 开始,
--enableMajorityReadConcern不可更改,并始终设置为true。在早期版本的 MongoDB 中,--enableMajorityReadConcern是可配置的。警告
如使用主节点-从节点-仲裁节点 (PSA) 三成员架构,请考虑以下因素:
如果从节点不可用或滞后,写关注
"majority"可能会导致性能问题。有关如何缓解这些问题的建议,请参阅缓解自管理 PSA 副本集的性能问题。如果使用的全局默认值
"majority",并且写关注小于大多数的大小,则您的查询可能会返回过时(未完全复制)的数据。
分片集群选项
--configsvr启动配置服务器时必需。
声明此
mongod实例用作分片集群的配置服务器。客户端(即其他集群组件)在使用此选项运行时无法将数据写入除config和admin之外的任何数据库。除非指定,否则使用此选项的mongod的默认端口为27019,默认--dbpath目录为/data/configdb。重要
使用
--configsvr启动 MongoDB Server 时,您还须指定--replSet。不再支持将已弃用的镜像
mongod实例用作配置服务器 (SCCC)。副本集配置服务器 (CSRS) 必须运行 WiredTiger 存储引擎。
--configsvr选项会创建一个本地 oplog。请勿将
--configsvr选项与--shardsvr一起使用。配置服务器不能是分片服务器。请勿将
--configsvr与skipShardingConfigurationChecks参数一起使用。也就是说,如果您暂时以独立形式启动mongod以进行维护操作,请加上参数skipShardingConfigurationChecks并去掉--configsvr。维护完成后,删除skipShardingConfigurationChecks参数,然后使用--configsvr重启。
--shardsvr启动分片服务器时必需。
将此
mongod实例配置为分片集群中的分片。这些实例的默认端口是27018。重要
使用
--shardsvr启动 MongoDB Server 时,您还须指定--replSet。请勿将
--shardsvr与skipShardingConfigurationChecks参数一起使用。也就是说,如果您暂时以独立形式启动mongod以进行维护操作,请加上参数skipShardingConfigurationChecks并去掉--shardsvr。维护完成后,删除skipShardingConfigurationChecks参数,然后使用--shardsvr重启。
TLS 选项
--tlsMode <mode>对所有网络连接启用 TLS 模式。
--tlsMode选项的参数可以是以下之一:值说明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的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsCertificateKeyFile <filename>指定同时包含 TLS/SSL 证书和密钥的
.pem文件。在 macOS 或 Windows 上,可以使用
--tlsCertificateSelector选项指定来自操作系统的安全证书存储区的证书,而不是 PEM 密钥文件。--tlsCertificateKeyFile和--tlsCertificateSelector选项是互斥的。您只能指定一个。在 Linux/BSD 上,当启用 TLS/SSL 时,您必须指定
--tlsCertificateKeyFile。在 Windows 或 macOS 上,当启用 TLS/SSL 时,必须指定
--tlsCertificateKeyFile或--tlsCertificateSelector。重要
仅适用于 Windows,MongoDB 不支持加密的 PEM 文件。如果遇到加密 PEM 文件,则
mongod无法启动。要在 Windows 上安全地存储和访问用于 TLS 的证书,请使用--tlsCertificateSelector。
有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsCertificateKeyFilePassword <value>指定解密证书密钥文件的密码(即
--tlsCertificateKeyFile)。仅在证书密钥文件已加密的情况下使用--tlsCertificateKeyFilePassword选项。在所有情况下,mongod都会对所有日志记录和报告输出中的密码进行脱敏。在 Linux/BSD 上,如果 PEM 文件中的私钥已加密且您未指定
--tlsCertificateKeyFilePassword选项,则 MongoDB 会提示您输入密码。请参阅 TLS/SSL 证书密码。在 macOS 上,如果 PEM 文件中的私钥已加密,则必须明确指定
--tlsCertificateKeyFilePassword选项。或者,您可以使用安全系统存储中的证书(请参阅--tlsCertificateSelector)而不是 PEM 文件,或者使用未加密的 PEM 文件。在 Windows 上,MongoDB 不支持加密证书。如果
mongod遇到加密的 PEM 文件,则会失败。可以使用--tlsCertificateSelector来代替。
有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--clusterAuthMode <option>默认: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的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsClusterFile <filename>指定包含 X.509 证书密钥文件的
.pem文件,用于群集或副本集的成员身份验证。在 macOS 或 Windows 上,可以使用
--tlsClusterCertificateSelector选项指定来自操作系统的安全证书存储区的证书,而不是 PEM 密钥文件。--tlsClusterFile和--tlsClusterCertificateSelector选项是互斥的。您只能指定一个。如果
--tlsClusterFile没有为内部集群身份验证指定.pem文件,或者未指定备选--tlsClusterCertificateSelector,则集群使用在--tlsCertificateKeyFile选项中指定的.pem文件,或使用由--tlsCertificateSelector返回的证书。如果使用 X.509身份验证,则必须指定
--tlsCAFile或tls.CAFile,除非使用--tlsCertificateSelector。如果显示的 X.509 证书在
mongod/mongos主机系统时间后的30天内过期,则mongod/mongos会在连接时记录警告。有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。重要
仅针对 Windows,MongoDB 不支持加密的 PEM 文件。如果遇到加密的 PEM 文件,
mongod无法启动。如要安全地存储和访问用于 Windows 成员身份验证的证书,请使用--tlsClusterCertificateSelector。
--tlsCertificateSelector <parameter>=<value>注意
可在 Windows 和 macOS 上用作
--tlsCertificateKeyFile的替代方案。指定证书属性,以便从操作系统的证书存储区中选择匹配的证书来用于 TLS。
--tlsCertificateKeyFile和--tlsCertificateSelector选项是互斥的。您只能指定一个。--tlsCertificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:属性值类型说明subjectASCII 字符串
证书上的主题名称或公用名
thumbprint十六进制字符串
以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。
thumbprint有时称为fingerprint。在使用系统 SSL 证书存储区时,会用 OCSP(在线证书状态协议)来验证证书的吊销状态。
mongod搜索操作系统的安全证书存储区,查找验证指定 TLS 证书的完整证书链所需的 CA 证书。具体来说,安全证书存储区必须包含根 CA 以及构建 TLS 证书的完整证书链所需的任何中间 CA 证书。请勿使用--tlsCAFile或--tlsClusterCAFile指定根 CA 和中间 CA 证书例如,如果 TLS/SSL 证书是使用单个根 CA 证书签署的,则安全证书存储必须包含该根 CA 证书。如果 TLS/SSL 证书是使用中间 CA 证书签署的,则安全证书存储必须包含中间 CA 证书和根 CA 证书。
注意
当使用
net.tls.certificateSelector或将--tlsCertificateSelector设为thumbprint时,无法使用rotateCertificates命令或db.rotateCertificates()Shell 方法
--tlsClusterCertificateSelector <parameter>=<value>注意
可在 Windows 和 macOS 上用作
--tlsClusterFile的替代方案。指定证书属性,以便从操作系统的证书存储区中选择匹配的证书,并用于内部 x.509 成员身份验证。
--tlsClusterFile和--tlsClusterCertificateSelector选项是互斥的。您只能指定一个。--tlsClusterCertificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:属性值类型说明subjectASCII 字符串
证书上的主题名称或公用名
thumbprint十六进制字符串
以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。
thumbprint有时称为fingerprint。mongod搜索操作系统的安全证书存储区,查找验证指定集群证书的完整证书链所需的 CA 证书。具体来说,安全证书存储区必须包含根 CA 以及构建集群证书的完整证书链所需的任何中间 CA 证书。请勿使用--tlsCAFile或--tlsClusterCAFile指定根 CA 和中间 CA 证书。例如,如果集群证书是使用单个根 CA 证书签署的,则安全证书存储区必须包含该根 CA 证书。如果集群证书是使用中间 CA 证书签署的,则安全证书存储区必须包含中间 CA 证书和根 CA 证书。
如果显示的 X.509 证书在
mongod/mongos主机系统时间后的30天内过期,则mongod/mongos会在连接时记录警告。
--tlsClusterPassword <value>指定用于解密 x.509 证书密钥文件(由
--tlsClusterFile指定)的密码。仅当证书密钥文件已加密时才能使用--tlsClusterPassword选项。在所有情况下,mongod都会对所有日志记录和报告输出中的密码进行脱敏。在Linux/BSD 上,如果 X.509 文件中的私钥已加密,并且您未指定 选项,
--tlsClusterPasswordMongoDB会提示输入密码。请参阅 TLS/SSL 证书密码。在 macOS 上,如果 X.509 文件中的私钥已加密,则必须显式指定
--tlsClusterPassword选项。或者,您可以使用安全系统存储中的证书(请参阅--tlsClusterCertificateSelector)而不是集群PEM文件,或者使用未加密的 PEM文件。在 Windows 上,MongoDB 不支持加密证书。如果
mongod遇到加密的 PEM 文件,则会失败。可以使用--tlsClusterCertificateSelector来代替。
有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsCAFile <filename>指定包含来自证书颁发机构的根证书链的
.pem文件。使用相对或绝对路径指定.pem文件的文件名。重要
在启动启用了 TLS/SSL 的
mongod实例时,必须指定--tlsCAFile标记、net.tls.CAFile配置选项或tlsUseSystemCA参数的值。--tlsCAFile、tls.CAFile和tlsUseSystemCA是互斥的。- 仅限 Windows/macOS
- 如果使用
--tlsCertificateSelector和/或--tlsClusterCertificateSelector,请勿使用--tlsCAFile来指定根和中间 CA 证书。将验证--tlsCertificateSelector和/或--tlsClusterCertificateSelector证书的完整信任链所需的所有 CA 证书存储在安全证书存储区中。
有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsClusterCAFile <filename>指定包含来自证书授权机构的根证书链的
.pem文件,用于验证建立连接的客户端提供的证书。使用相对或绝对路径指定.pem文件的文件名。--tlsClusterCAFile要求设置--tlsCAFile。如果
--tlsClusterCAFile未指定.pem文件来验证建立连接的客户端的证书,集群就会使用--tlsCAFile选项中指定的.pem文件。--tlsClusterCAFile允许您使用单独的证书颁发机构来验证 TLS 握手的客户端到服务器和服务器到客户端部分。- 仅限 Windows/macOS
- 如果使用
--tlsCertificateSelector和/或--tlsClusterCertificateSelector,请勿使用--tlsClusterCAFile来指定根和中间 CA 证书。将验证--tlsCertificateSelector和/或--tlsClusterCertificateSelector证书的完整信任链所需的所有 CA 证书存储在安全证书存储区中。
有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsCRLFile <filename>指定包含证书吊销列表的
.pem文件。使用相对或绝对路径指定.pem文件的文件名。注意
macOS 上无法指定 CRL 文件。但您可以使用系统 SSL 证书存储区,该存储区使用 OCSP(在线证书状态协议)来验证证书的吊销状态。如要使用系统 SSL 证书存储区,请参阅
--tlsCertificateSelector。为了检查证书吊销状况,MongoDB 默认
enablesOCSP(在线证书状态协议)作为指定 CRL 文件或使用系统 SSL 证书存储区的替代方法。
有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsAllowInvalidCertificates绕过对集群中其他服务器上的 TLS 证书进行验证检查,并允许使用无效证书进行连接。
注意
如果您在使用 X.509 身份验证时指定
--tlsAllowInvalidCertificates或tls.allowInvalidCertificates: true,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。使用
--tlsAllowInvalidCertificates设置时,MongoDB 会记录有关使用无效证书的警告。有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsAllowInvalidHostnames连接副本集或分片集群的其他成员以进行进程间身份验证时,禁用 TLS 证书中的主机名验证。这样即便其他成员的证书中的主机名与配置的主机名不匹配,
mongod也能与这些成员连接。有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsAllowConnectionsWithoutCertificates默认情况下,服务器会绕过客户端证书验证,除非将服务器配置为使用 CA 文件。如果提供了 CA 文件,则会应用以下规则:
对于提供证书的客户端,
mongod会使用--tlsCAFile指定的根证书链来执行证书验证,并拒绝证书无效的客户端。
如果您的混合部署包含不向或不能向
mongod提供证书的客户端,请使用--tlsAllowConnectionsWithoutCertificates选项。有关 TLS 和MongoDB的更多信息,请参阅在自管理部署上为
mongodmongosTLS/SSL 配置 和 以及客户端的 TLS/SSL 配置。
--tlsDisabledProtocols <protocol(s)>防止使用 TLS 运行的 MongoDB Server 接受使用特定协议的传入连接。要指定多个协议,请使用逗号分隔的协议列表。
--tlsDisabledProtocols可识别以下协议: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指定为--tlsDisabledProtocols。副本集和分片集群的成员必须至少使用一个共同协议。
提示
--tlsFIPSMode指示
mongod使用 TLS 库的 FIPS 模式。系统必须有符合 FIPS 标准的库,才能使用--tlsFIPSMode选项。注意
只有 MongoDB Enterprise 支持与 FIPS 兼容的 TLS/SSL。有关更多信息,请参阅为 FIPS 配置 MongoDB 。
分析器选项
--profile <level>默认值:0
配置数据库分析器级别。以下分析器级别可用:
0- 分析器已关闭,因此不收集任何数据。这是默认的分析器级别。
1分析器会收集用时超过
slowms值或与某一筛选器匹配的操作的对应数据。设置筛选器后:
slowms和sampleRate选项不用于分析。分析器仅捕获与筛选器匹配的操作。
2- 分析器会收集所有操作的数据。当设立为
2级时,分析器会忽略用户提供的slowms和filter值。
警告
分析会降低性能,并在系统日志中暴露未经加密的查询数据。在生产部署中配置和启用分析器之前,请仔细考虑对性能和安全的影响。
有关潜在性能下降的更多信息,请参阅分析器开销。
--slowms <integer>默认值:100
慢速操作时长阈值(以毫秒为单位)。运行时长超过此阈值的操作被视为慢速操作。
当
logLevel设置为0时,MongoDB 会将慢速操作记录到诊断日志中,记录速度由slowOpSampleRate确定。如果
logLevel设置得较高,所有操作无论延迟如何,都会显示在诊断日志中,但从节点记录慢速 oplog 条目消息这项操作除外。从节点仅记录慢速 oplog 条目。增加logLevel不会导致记录所有 oplog 条目。对于
mongod实例,--slowms会影响诊断日志,如果启用,它还会影响分析器。提示
--slowOpSampleRate <double>默认值:1.0
应分析或记录的慢速操作的比例。
--slowOpSampleRate接受 0 到 1(含)之间的值。--slowOpSampleRate不影响副本集的从节点成员记录慢速 oplog 条目日志。从节点成员会记录所有用时超过慢速操作阈值的 oplog 条目,而不论--slowOpSampleRate。对于
mongod实例,--slowOpSampleRate会影响诊断日志,如果启用,它还会影响分析器。
审核选项
--auditCompressionMode5.3 版本中的新增功能。
指定压缩模式以进行审核日志加密。您还须使用
--auditEncryptionKeyUID或--auditLocalKeyFile启用审核日志加密。--auditCompressionMode可以设置为以下值之一:值说明zstd使用 zstd 算法压缩审核日志。
none(默认)请勿压缩审核日志。
注意
仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。
--auditDestination启用审核并指定
mongod发送所有审核事件的位置。--auditDestination可能的值:值说明syslog将审核事件以 JSON 格式输出到系统日志中。在 Windows 上不可用。审核消息的系统日志严重性级别为
info,设施级别为info。系统日志消息限制可能会导致审核消息被截断。审核系统既不会检测此类截断,也不会在其出现时报错。
console将审核事件以 JSON 格式输出到
stdout。file--auditFormat以--auditPath中指定的格式将Atlas 审核事件输出到 中指定的文件。注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
--auditEncryptionKeyUID6.0 版本中的新功能。
指定用于审核日志加密的 Key Management Interoperability Protocol (KMIP) 密钥的唯一标识符。
--auditEncryptionKeyUID和--auditLocalKeyFile不能一起使用。注意
仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。
--auditFormat如果
--auditDestination为file,则指定用于审核的输出文件格式。--auditFormat选项可为以下任一个值:值说明JSON将Atlas 审核事件以JSON格式输出到
--auditPath中指定的文件。BSON将BSON二进制格式的Atlas 审核事件输出到
--auditPath中指定的文件。与以 BSON 格式打印相比,将 Atlas 审核事件以 JSON 格式打印到文件更可能导致服务器性能下降。
注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
--auditLocalKeyFile5.3 版本中的新增功能。
指定本地审核密钥文件的路径和文件名,用于审核日志加密。
注意
由于该密钥不安全,仅使用
--auditLocalKeyFile进行测试。要保护密钥的安全,请使用--auditEncryptionKeyUID和外部 Key Management Interoperability Protocol (KMIP) 服务器。--auditLocalKeyFile和--auditEncryptionKeyUID不能一起使用。注意
仅在 MongoDB Enterprise 中可用。MongoDB Enterprise 和 Atlas 有不同的配置要求。
--auditPath如果
--auditDestination的值为file,则指定用于审核的输出文件。该--auditPath选项可以使用完整路径名或相对路径名。注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
--auditFilter指定用于限制审核系统记录的操作类型的筛选器。该选项采用以下形式的查询文档的字符串表示形式:
{ <field1>: <expression1>, ... } <field>可以是审核消息中的任意字段,包括参数文档中返回的字段。<expression>是查询条件表达式。要指定 Atlas 审核过滤器,请将过滤器文档括在单引号 中,以将文档作为字符串传递。
要在配置文件中指定审核筛选器,必须使用配置文件的 YAML 格式。
注意
仅在 MongoDB Enterprise 和 MongoDB Atlas 中有用。
内存选项
--inMemorySizeGB <float>默认值:物理 RAM 大小减去 1 GB 后的 50%。
为内存存储引擎数据分配的最大内存量,包括索引、oplog(如果
mongod是副本集的一部分)、分片集群元数据等。值的范围可以从 256 MB 到 10 TB,并且可以是浮点数。
默认情况下,内存存储引擎使用物理 RAM 大小减去 1 GB 后的 50%。
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
加密密钥管理选项
--enableEncryption默认:false
对 WiredTiger 存储引擎启用加密。该选项必须启用,才能传递加密密钥和配置。
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--encryptionCipherMode <string>默认值:AES256-CBC
用于静态加密的密码模式:
模式说明AES256-CBC采用密码分组链接模式的 256 位高级加密标准
AES256-GCM采用 Galois/Counter 模式的 256 位高级加密标准
仅在 Linux 上可用。
Windows 上的 MongoDB Enterprise 不再支持将
AES256-GCM作为静态加密的分组密码算法。仅 Linux 版本支持此用法。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--encryptionKeyFile <string>通过 KMIP 以外的进程管理密钥时,本地密钥文件的路径。仅在通过 KMIP 以外的进程管理密钥时设置。如果已使用 KMIP 加密数据,则 MongoDB 会抛出错误。
该密钥文件只能包含一个密钥。密钥是一个 16 位或 32 位的字符串。
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipKeyIdentifier <string>KMIP 服务器中现有密钥的唯一 KMIP 标识符。包括该设置可将与该标识符关联的密钥作为系统密钥。只能在第一次为
mongod实例启用加密时使用该设置。需要--enableEncryption。如果未指定,MongoDB 会请求 KMIP 服务器创建新密钥用作系统密钥。
如果 KMIP 服务器找不到指定标识符的密钥或者数据已使用密钥加密,则 MongoDB 将报告错误
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipRotateMasterKey <boolean>默认:false
如果为 true,则轮换主密钥并对内部密钥库重新加密。
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipServerName <string>要连接的 KMIP 服务器的主机名或 IP 地址。需要
--enableEncryption。您可以将多个 KMIP 服务器指定为逗号分隔的列表,例如:
server1.example.com,server2.example.com。启动时,mongod会尝试按列出的顺序与每台服务器建立连接,并选择可以成功建立连接的第一台服务器。KMIP 服务器选择仅在启动时进行。连接 KMIP 服务器时,
mongod会验证指定的--kmipServerName是否与 KMIP 服务器提供的证书中的主题备用名称SAN(如果SAN不存在,则为公用名 (CN)相匹配。如果SAN存在,则mongod与CN不匹配。如果主机名与SAN(或CN)不匹配,则mongod将无法连接。从 MongoDB 4.2 开始,在比较 SAN 时,MongoDB 可以比较 DNS 名称或 IP 地址。在之前的版本中,MongoDB 仅能比较 DNS 名称。
注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipPort <number>默认:5696
用于与 KMIP 服务器通信的端口号。需要
--kmipServerName。需要--enableEncryption。如果使用
--kmipServerName指定多个 KMIP 服务器,则mongod将对所有提供的 KMIP 服务器使用通过--kmipPort指定的端口。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipConnectRetries <number>默认值:0
与 KMIP 服务器初次连接时的重试次数。与
--kmipConnectTimeoutMS一起使用可控制mongod在两次重试之间等待响应的时长。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipConnectTimeoutMS <number>默认值:5000
等待 KMIP 服务器响应的超时时间(以毫秒为单位)。如果指定了
--kmipConnectRetries设置,mongod会在两次重试之间等待指定的间隔。取值不得小于
1000。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipClientCertificateSelector <string>5.0 版本中的新增功能:可在 Windows 和 macOS 上作为
--kmipClientCertificateFile的替代方案。--kmipClientCertificateFile和--kmipClientCertificateSelector选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储区中选择匹配的证书来在 KMIP 服务器上对 MongoDB 进行身份验证。
--kmipClientCertificateSelector接受格式为<property>=<value>的参数,其中属性可以是以下之一:属性值类型说明subjectASCII 字符串
证书上的主题名称或公用名
thumbprint十六进制字符串
以十六进制表示的字节序列,用于通过 SHA-1 摘要识别公钥。
thumbprint有时称为fingerprint。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipClientCertificateFile <string>用于在 KMIP 服务器上对 MongoDB 进行身份验证的
.pem文件的路径。指定的.pem文件必须包含 TLS/SSL 证书和密钥。要使用该选项,还须指定
--kmipServerName选项。注意
在 macOS 或 Windows 上,您可以使用操作系统安全存储区中的证书而不是 PEM 密钥文件。请参阅
--kmipClientCertificateSelector。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--kmipClientCertificatePassword <string>用于解密连接到 KMIP服务器的客户端证书的私钥的密码。 此选项向 KMIP服务器对MongoDB进行身份验证,并要求您提供
--kmipClientCertificateFile。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。
--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 <integer>默认:900 秒
5.3 版本中的新增功能。
mongod轮询 KMIP 服务器以获取有效密钥的频率(以秒为单位)。要禁用轮询,请将值设置为
-1。
--kmipUseLegacyProtocol <boolean>默认: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实例时,该实例会轮换密钥并退出。注意
Enterprise 版功能
仅在 MongoDB Enterprise 中可用。