官方地址 https://docs.mongodb.com/manual/reference/configuration-options/#configuration-file
以下页面描述了MongoDB 4.0中可用的配置选项。有关其他版本MongoDB的配置文件选项,请参阅相应版本的MongoDB手册。
配置文件
您可以使用配置文件在启动时配置mongod
和mongos
实例。配置文件包含mongod
与 mongos
命令行选项等效的设置。请参阅配置文件设置和命令行选项映射。
使用配置文件可以简化管理mongod
和 mongos
选项,尤其适用于大规模部署。您还可以向配置文件添加注释以解释服务器的设置。
在Linux上,/etc/mongod.conf
使用包管理器安装MongoDB时会包含默认配置文件。
在Windows上, 安装期间包含默认配置文件。<install directory>/bin/mongod.cfg
在macOS上,安装不包含默认配置文件; 相反,要使用配置文件,请创建一个文件。
文件格式
在2.6版中更改: MongoDB 2.6引入了基于YAML的配置文件格式。的2.4配置文件的格式仍是向后兼容性。
以下示例配置文件包含mongod
可以适应本地配置的几个设置:
注意
YAML不支持缩进的制表符:使用空格代替。
复制
复制
systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: journal: enabled: true processManagement: fork: true net: bindIp: 127.0.0.1 port: 27017 setParameter: enableLocalhostAuthBypass: false ...
包括在官方的MongoDB包的Linux软件包init脚本依赖于特定的值systemLog.path
,storage.dbPath
和processManagement.fork
。如果在默认配置文件中修改这些设置,则mongod
可能无法启动。
[1] | YAML是JSON的超集。 |
使用配置文件
要配置mongod
或mongos
使用配置文件,请使用--config
选项或 -f
选项指定配置文件,如以下示例所示:
例如,以下用途:mongod --config <configuration file>
mongos --config <configurationfile>
复制
复制
mongod --config /etc/mongod.conf mongos --config /etc/mongos.conf
您还可以使用-f
别名指定配置文件,如下所示:
复制
复制
mongod -f /etc/mongod.conf mongos -f /etc/mongos.conf
如果您从软件包安装并使用系统的init脚本启动了MongoDB ,那么您已经在使用配置文件。
核心选项
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
在3.0版中更改。
默认的日志信息 冗长级别的组件。详细级别确定MongoDB输出的信息和调试消息的数量。
详细程度可以
0
是5
:要对命名组件使用不同的详细级别,请使用组件的详细程度设置。例如,使用
systemLog.component.accessControl.verbosity
专门为ACCESS
组件设置详细级别。请参阅
systemLog.component.<name>.verbosity
特定组件详细程度设置的设置。有关设置日志详细级别的各种方法,请参阅 配置日志详细级别。
-
systemLog.
quiet
输入:boolean
运行
mongos
或mongod
处于安静模式,试图限制输出量。systemLog.quiet
是不建议用于生产系统,因为它可以使在特定的连接变得更加困难跟踪问题。
-
systemLog.
traceAllExceptions
输入:boolean
打印详细信息以进行调试。用于支持相关故障排除的其他日志记录。
-
systemLog.
syslogFacility
输入:string
默认值:用户
将消息记录到syslog时使用的设施级别。您指定的值必须由操作系统的syslog实现支持。要使用此选项,您必须设置
systemLog.destination
为syslog
。
-
systemLog.
path
输入:string
日志文件的路径,
mongod
或者mongos
应该发送所有诊断日志记录信息,而不是标准输出或主机的syslog。MongoDB在指定的路径上创建日志文件。Linux软件包init脚本不希望
systemLog.path
更改默认值。如果使用Linux软件包并进行更改systemLog.path
,则必须使用自己的init脚本并禁用内置脚本。
-
systemLog.
logAppend
输入:boolean
默认值:False
当或 实例重新启动时
true
,将新条目添加到现有日志文件的末尾mongos
或mongod
将其添加到现有日志文件的末尾。如果没有此选项,将备份现有日志并创建新文件。mongos
mongod
mongod
-
systemLog.
logRotate
输入:string
默认值:重命名
版本3.0.0中的新功能。
该
logRotate
命令的行为。指定rename
或reopen
:rename
重命名日志文件。reopen
按照典型的Linux / Unix日志轮换行为关闭并重新打开日志文件。使用reopen
使用的Linux / Unix logrotate的工具时,以避免日志的损失。如果指定
reopen
,则还必须设置systemLog.logAppend
为true
。
-
systemLog.
destination
输入:string
MongoDB发送所有日志输出的目标。指定
file
或syslog
。如果指定file
,则还必须指定systemLog.path
。如果未指定
systemLog.destination
,MongoDB会将所有日志输出发送到标准输出。警告
在
syslog
当它将消息记录,还不时的MongoDB发出消息后台生成时间戳。这可能导致日志条目的误导时间戳,尤其是在系统负载很重的情况下。我们建议使用file
生产系统选项来确保准确的时间戳。
-
systemLog.
timeStampFormat
输入:string
默认值:iso8601-local
日志消息中时间戳的时间格式。指定以下值之一:
值 描述 ctime
将时间戳显示为。 Wed Dec 31 18:17:54.811
iso8601-utc
以ISO-8601格式显示协调世界时(UTC)的时间戳。例如,在大纪元开始的纽约: 1970-01-01T00:00:00.000Z
iso8601-local
以ISO-8601格式显示本地时间的时间戳。例如,在大纪元开始的纽约: 1969-12-31T19:00:00.000-0500
systemLog.component
选项
复制
复制
systemLog: component: accessControl: verbosity: <int> command: verbosity: <int> # COMMENT some component verbosity settings omitted for brevity replication: verbosity: <int> heartbeats: verbosity: <int> rollback: verbosity: <int> storage: verbosity: <int> journal: verbosity: <int> recovery: verbosity: <int> write: verbosity: <int>
-
systemLog.component.accessControl.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与访问控制相关的组件的日志消息详细级别。见
ACCESS
组件。详细程度可以
0
是5
:
-
systemLog.component.command.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与命令相关的组件的日志消息详细级别。见
COMMAND
组件。详细程度可以
0
是5
:
-
systemLog.component.control.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与控制操作相关的组件的日志消息详细级别。见
CONTROL
组件。详细程度可以
0
是5
:
-
systemLog.component.ftdc.
verbosity
类型:整数
默认值:0
版本3.2中的新功能。
与诊断数据收集操作相关的组件的日志消息详细级别。见
FTDC
组件。详细程度可以
0
是5
:
-
systemLog.component.geo.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与地理空间解析操作相关的组件的日志消息详细级别。见
GEO
组件。详细程度可以
0
是5
:
-
systemLog.component.index.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与索引操作相关的组件的日志消息详细级别。见
INDEX
组件。详细程度可以
0
是5
:
-
systemLog.component.network.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与网络操作相关的组件的日志消息详细级别。见
NETWORK
组件。详细程度可以
0
是5
:
-
systemLog.component.query.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与查询操作相关的组件的日志消息详细级别。见
QUERY
组件。详细程度可以
0
是5
:
-
systemLog.component.replication.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与复制相关的组件的日志消息详细级别。见
REPL
组件。详细程度可以
0
是5
:
-
systemLog.component.replication.heartbeats.
verbosity
类型:整数
默认值:0
版本3.6中的新功能。
与心跳相关的组件的日志消息详细级别。见
REPL_HB
组件。详细程度可以
0
是5
:
-
systemLog.component.replication.rollback.
verbosity
类型:整数
默认值:0
版本3.6中的新功能。
与回滚相关的组件的日志消息详细级别。见
ROLLBACK
组件。详细程度可以
0
是5
:
-
systemLog.component.sharding.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与分片相关的组件的日志消息详细级别。见
SHARDING
组件。详细程度可以
0
是5
:
-
systemLog.component.storage.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与存储相关的组件的日志消息详细级别。见
STORAGE
组件。如果
systemLog.component.storage.journal.verbosity
未设置,则systemLog.component.storage.verbosity
level也适用于日记组件。详细程度可以
0
是5
:
-
systemLog.component.storage.journal.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与日记相关的组件的日志消息详细级别。见
JOURNAL
组件。如果
systemLog.component.storage.journal.verbosity
未设置,则日记记录组件具有与父存储组件相同的详细级别:即systemLog.component.storage.verbosity
设置的 级别或默认的详细级别。详细程度可以
0
是5
:
-
systemLog.component.storage.recovery.
verbosity
类型:整数
默认值:0
4.0版中的新功能。
与恢复相关的组件的日志消息详细级别。见
RECOVERY
组件。如果
systemLog.component.storage.recovery.verbosity
未设置,则systemLog.component.storage.verbosity
level也适用于恢复组件。详细程度可以
0
是5
:
-
systemLog.component.transaction.
verbosity
类型:整数
默认值:0
版本4.0.2中的新功能。
与事务相关的组件的日志消息详细级别。见
TXN
组件。详细程度可以
0
是5
:
-
systemLog.component.write.
verbosity
类型:整数
默认值:0
版本3.0中的新功能。
与写入操作相关的组件的日志消息详细级别。见
WRITE
组件。详细程度可以
0
是5
:
processManagement
选项
复制
复制
processManagement: fork: <boolean> pidFilePath: <string> timeZoneInfo: <string>
-
processManagement.
fork
输入:boolean
默认值:False
启用在后台运行
mongos
或mongod
处理的守护程序模式。默认情况下mongos
或mongod
不作为守护程序运行:通常通过使用或使用处理守护进程的控制进程(例如,和)运行mongos
或mongod
作为守护程序 运行。processManagement.fork
upstart
systemd
Linux软件包init脚本不希望
processManagement.fork
更改默认值。如果使用Linux软件包并进行更改processManagement.fork
,则必须使用自己的init脚本并禁用内置脚本。
-
processManagement.
pidFilePath
输入:string
指定一个文件位置来保存的进程ID
mongos
或mongod
过程,其中mongos
或mongod
将写入其PID。这对于结合设置跟踪mongos
或mongod
处理 非常有用processManagement.fork
。如果没有指定的processManagement.pidFilePath
选项,则该进程不会创建PID文件。
-
processManagement.
timeZoneInfo
输入:string
加载时区数据库的完整路径。如果未提供此选项,则MongoDB将使用其内置时区数据库。
Linux和macOS包中包含的配置文件
/usr/share/zoneinfo
默认设置时区数据库路径。内置时区数据库是Olson / IANA时区数据库的副本。它与MongoDB版本一起更新,但时区数据库的发布周期与MongoDB的发布周期不同。可以从https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip下载最新版本的时区数据库的副本 。
cloud
选项
4.0版中的新功能。
复制
复制
cloud: monitoring: free: state: <string> tag: <string>
-
cloud.monitoring.free.
state
输入:string
4.0版中的新功能:适用于MongoDB Community Edition。
启用或禁用免费的MongoDB云监控。
cloud.monitoring.free.state
接受以下值:runtime
默认。您可以在运行时启用或禁用免费监控。
要在运行时启用或禁用免费监控,请参阅
db.enableFreeMonitoring()
和db.disableFreeMonitoring()
。要在运行时使用访问控制在运行时启用或禁用免费监视,用户必须具有所需的权限。查看
db.enableFreeMonitoring()
并db.disableFreeMonitoring()
了解详情。on
启动时启用免费监控; 即注册免费监控。在启动时启用时,您无法在运行时禁用自由监视。 off
无论您之前是否注册过免费监控,都会在启动时禁用免费监控。在启动时禁用时,无法在运行时启用免费监视。 启用后,自由监控状态将保持启用状态,直到明确禁用。也就是说,每次启动服务器时都不需要重新启用。
有关相应的命令行选项,请参阅
--enableFreeMonitoring
。
-
cloud.monitoring.free.
tag
输入:string
4.0版中的新功能:适用于MongoDB Community Edition。
用于描述环境上下文的可选标记 标签可以在启动时作为免费MongoDB云监控注册的一部分发送。
有关相应的命令行选项,请参阅
--enableFreeMonitoringTag
。
net
选项
复制
复制
net: port: <int> bindIp: <string> bindIpAll: <boolean> maxIncomingConnections: <int> wireObjectCheck: <boolean> ipv6: <boolean> unixDomainSocket: enabled: <boolean> pathPrefix: <string> filePermissions: <int> ssl: sslOnNormalPorts: <boolean> # deprecated since 2.6 certificateSelector: <string> clusterCertificateSelector: <string> mode: <string> PEMKeyFile: <string> PEMKeyPassword: <string> clusterFile: <string> clusterPassword: <string> CAFile: <string> clusterCAFile: <string> CRLFile: <string> allowConnectionsWithoutCertificates: <boolean> allowInvalidCertificates: <boolean> allowInvalidHostnames: <boolean> disabledProtocols: <string> FIPSMode: <boolean> compression: compressors: <string> serviceExecutor: <string>
-
net.
port
类型:整数
默认值:27017
MongoDB实例侦听客户端连接的TCP端口。
-
net.
bindIp
输入:string
默认值:localhost
注意
开始在MongoDB中3.6,
mongos
并mongod
绑定默认为localhost。请参见默认绑定到Localhost。主机名和/或IP地址和/或完整的Unix域套接字路径,
mongos
并且mongod
应该监听客户端连接。您可以附加mongos
和mongod
任何界面。要绑定到多个地址,请输入逗号分隔值列表。例
localhost,/tmp/mongod.sock
小费
如果可能,请使用逻辑DNS主机名而不是IP地址,尤其是在配置副本集成员或分片集群成员时。逻辑DNS主机名的使用避免了由于IP地址更改而导致的配置更改。
警告
在绑定到其他IP地址之前,请考虑启用安全检查表中列出的访问控制和其他安全措施,以防止未经授权的访问。
要绑定到所有IPv4地址,请输入
0.0.0.0
。要绑定到所有IPv4和IPv6地址,请输入
::,0.0.0.0
或者使用该net.bindIpAll
设置。注意
net.bindIp
并且net.bindIpAll
是相互排斥的。也就是说,您可以指定其中一个,但不能同时指定两者。
-
net.
bindIpAll
输入:boolean
默认值:False
版本3.6中的新功能。
如果为true,则
mongos
和mongod
实例绑定到所有IP地址。当连接mongos
和mongod
到可公开访问的接口,确保已实施适当的身份验证和防火墙的限制以保护数据库的完整性。警告
在绑定到其他IP地址之前,请考虑启用安全检查表中列出的访问控制和其他安全措施,以防止未经授权的访问。
或者,将
net.bindIp
设置设置为::,0.0.0.0
绑定到所有IP地址。注意
net.bindIp
并且net.bindIpAll
是相互排斥的。也就是说,您可以指定其中一个,但不能同时指定两者。
-
net.
maxIncomingConnections
类型:整数
默认值:65536
要接受
mongos
或mongod
将接受的最大同时连接数。如果此设置高于操作系统配置的最大连接跟踪阈值,则此设置无效。不要为此选项分配太低的值,否则在正常的应用程序操作期间会遇到错误。
mongos
如果您有一个客户端创建多个连接并允许它们超时而不是关闭它们,这对于特别有用。在这种情况下,请设置
maxIncomingConnections
为略高于客户端创建的最大连接数或连接池的最大大小的值。
-
net.
wireObjectCheck
输入:boolean
默认值:True
何时
true
,mongod
或者mongos
实例在收到客户端时验证所有请求,以防止客户端将格式错误或无效的BSON插入MongoDB数据库。对于具有高度子文档嵌套的对象,
net.wireObjectCheck
可以对性能产生很小的影响。
net.unixDomainSocket
选项
复制
复制
net: unixDomainSocket: enabled: <boolean> pathPrefix: <string> filePermissions: <int>
-
net.unixDomainSocket.
enabled
输入:boolean
默认值:True
启用或禁用UNIX域套接字上的侦听。
net.unixDomainSocket.enabled
仅适用于基于Unix的系统。如果
net.unixDomainSocket.enabled
是true
,mongos
或者mongod
监听Unix套接字上。该
mongos
或mongod
过程总是Unix套接字上监听,除非以下情况之一是真实的:net.unixDomainSocket.enabled
是false
--nounixsocket
已设定。命令行选项优先于配置文件设置。net.bindIp
没有设定net.bindIp
未指定localhost
或其关联的IP地址
版本2.6中的新功能:
mongos
或mongod
从官方.deb和.rpm软件包安装的bind_ip
配置127.0.0.1
默认配置为。
-
net.unixDomainSocket.
pathPrefix
输入:string
默认值:/ tmp
UNIX套接字的路径。
net.unixDomainSocket.pathPrefix
仅适用于基于Unix的系统。如果此选项没有值,则
mongos
或mongod
进程会创建一个带有/tmp
前缀的套接字。MongoDB在UNIX套接字上创建和侦听,除非满足以下条件之一:net.unixDomainSocket.enabled
是false
--nounixsocket
已设定net.bindIp
没有设定net.bindIp
未指定localhost
或其关联的IP地址
-
net.unixDomainSocket.
filePermissions
输入:int
默认值:
0700
设置UNIX域套接字文件的权限。
net.unixDomainSocket.filePermissions
仅适用于基于Unix的系统。
net.http
选项
在版本3.6中更改: MongoDB 3.6删除了已弃用的net.http
选项。自3.2版以来,这些选项已被弃用。
net.ssl
选项
复制
复制
net: ssl: sslOnNormalPorts: <boolean> # deprecated since 2.6 mode: <string> PEMKeyFile: <string> PEMKeyPassword: <string> certificateSelector: <string> clusterCertificateSelector: <string> clusterFile: <string> clusterPassword: <string> CAFile: <string> clusterCAFile: <string> CRLFile: <string> allowConnectionsWithoutCertificates: <boolean> allowInvalidCertificates: <boolean> allowInvalidHostnames: <boolean> disabledProtocols: <string> FIPSMode: <boolean>
-
net.ssl.
sslOnNormalPorts
输入:boolean
从2.6版开始不推荐使用:改为使用。
net.ssl.mode: requireSSL
为
mongos
或启用或禁用TLS / SSLmongod
。对于默认MongoDB端口上的所有连接或指定的端口
net.ssl.sslOnNormalPorts
,使用mongos
或mongod
要求TLS / SSL加密net.port
。默认情况下,net.ssl.sslOnNormalPorts
已禁用。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
mode
输入:string
版本2.6中的新功能。
启用或禁用用于所有网络连接的TLS / SSL或混合TLS / SSL。
net.ssl.mode
设置的参数可以是以下之一:值 描述 disabled
服务器不使用TLS / SSL。 allowSSL
服务器之间的连接不使用TLS / SSL。对于传入连接,服务器接受TLS / SSL和非TLS /非SSL。 preferSSL
服务器之间的连接使用TLS / SSL。对于传入连接,服务器接受TLS / SSL和非TLS /非SSL。 requireSSL
服务器仅使用和接受TLS / SSL加密连接。 从版本3.4开始,如果
--sslCAFile
或未ssl.CAFile
指定且未使用x.509身份验证,则在连接到启用TLS / SSL的服务器时将使用系统范围的CA证书存储。如果使用x.509身份验证,
--sslCAFile
或ssl.CAFile
必须指定,除非使用--sslCertificateSelector
。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
PEMKeyFile
输入:string
注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.certificateSelector
。在
.pem
同时包含TLS / SSL证书和密钥文件。- 在Linux / BSD上,您必须指定
net.ssl.PEMKeyFile
何时启用TLS / SSL。 - 在Windows或macOS上,您必须指定
net.ssl.PEMKeyFile
或net.ssl.certificateSelector
启用TLS / SSL时。
有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
- 在Linux / BSD上,您必须指定
-
net.ssl.
PEMKeyPassword
输入:string
用于解密证书密钥文件的密码(即
PEMKeyFile
)。net.ssl.PEMKeyPassword
仅在证书密钥文件已加密时才使用该选项。在所有情况下,mongos
或mongod
将从所有日志记录和报告输出中编辑密码。从MongoDB 4.0开始:
- 在Linux / BSD上,如果PEM文件中的私钥已加密且您未指定该
net.ssl.PEMKeyPassword
选项,MongoDB将提示输入密码。请参阅TLS / SSL证书密码。 - 在macOS或Windows上,如果PEM文件中的私钥已加密,则必须明确指定该
net.ssl.PEMKeyPassword
选项。或者,您可以使用安全系统存储中的证书(请参阅net.ssl.certificateSelector
参考资料)而不是PEM密钥文件,或使用未加密的PEM文件。
有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
- 在Linux / BSD上,如果PEM文件中的私钥已加密且您未指定该
-
net.ssl.
certificateSelector
输入:string
版本4.0中的新功能:在Windows和macOS上可用作替代版本
net.ssl.PEMKeyFile
。net.ssl.PEMKeyFile
和net.ssl.certificateSelector
选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择匹配的证书。
net.ssl.certificateSelector
接受格式的参数,<property>=<value>
其中属性可以是以下之一:属性 值类型 描述 subject
ASCII字符串 证书上的主题名称或通用名称 thumbprint
十六进制字符 表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。
在
thumbprint
有时被称为一个fingerprint
。
-
net.ssl.
clusterCertificateSelector
输入:string
版本4.0中的新功能:在Windows和macOS上可用作替代版本
net.ssl.clusterFile
。net.ssl.clusterFile
和net.ssl.clusterCertificateSelector
选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择用于内部身份验证的匹配证书。
net.ssl.clusterCertificateSelector
接受格式的参数,<property>=<value>
其中属性可以是以下之一:属性 值类型 描述 subject
ASCII字符串 证书上的主题名称或通用名称 thumbprint
十六进制字符 表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。
在
thumbprint
有时被称为一个fingerprint
。
-
net.ssl.
clusterFile
输入:string
注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.clusterCertificateSelector
。在
.pem
包含了X.509证书,密钥文件的文件会员认证 的集群或副本集。如果
net.ssl.clusterFile
未指定.pem
内部群集身份验证或备用 文件net.ssl.clusterCertificateSelector
,则群集将使用设置中.pem
指定的 文件PEMKeyFile
或由net.ssl.certificateSelector
。返回的证书。如果使用x.509身份验证,
--sslCAFile
或ssl.CAFile
必须指定,除非使用--sslCertificateSelector
。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
clusterPassword
输入:string
版本2.6中的新功能。
用于解密指定的x.509证书密钥文件的密码
--sslClusterFile
。net.ssl.clusterPassword
仅在证书密钥文件已加密时才使用该选项。在所有情况下,mongos
或mongod
将从所有日志记录和报告输出中编辑密码。从MongoDB 4.0开始:
- 在Linux / BSD上,如果x.509文件中的私钥已加密且您未指定该
net.ssl.clusterPassword
选项,则MongoDB将提示输入密码。请参阅TLS / SSL证书密码。 - 在macOS或Windows上,如果x.509文件中的私钥已加密,则必须显式指定该
net.ssl.clusterPassword
选项。或者,您可以使用安全系统存储中的证书(请参阅net.ssl.clusterCertificateSelector
)而不是群集PEM文件,也可以使用未加密的PEM文件。
有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
- 在Linux / BSD上,如果x.509文件中的私钥已加密且您未指定该
-
net.ssl.
CAFile
输入:string
.pem
包含证书颁发机构的根证书链的文件。.pem
使用相对路径或绝对路径指定文件的文件名 。从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.certificateSelector
。使用安全存储时,您不需要,但也可以指定net.ssl.CAFile
。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
clusterCAFile
输入:string
版本4.0.3中的新增功能
.pem
包含证书颁发机构的根证书链的文件,用于验证由建立连接的客户端提供的证书。.pem
使用相对路径或绝对路径指定文件的文件名。如果
net.ssl.clusterCAFile
未指定.pem
用于验证来自建立连接的客户端的证书的.pem
文件,则群集将使用该net.ssl.CAFile
选项中指定的文件。net.ssl.clusterCAFile
允许您使用单独的证书颁发机构来验证客户端到服务器和服务器到TLS握手的客户端部分。从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.clusterCertificateSelector
。使用安全存储时,您不需要,但也可以指定net.ssl.clusterCAFile
。需要
net.ssl.CAFile
设置。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
CRLFile
输入:string
.pem
包含证书吊销列表的文件。.pem
使用相对路径或绝对路径指定文件的文件名。注意
从MongoDB 4.0开始,您无法
net.ssl.CRLFile
在macOS上指定。请net.ssl.certificateSelector
改用。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
allowConnectionsWithoutCertificates
输入:boolean
对于未提供证书的客户端,
mongos
或mongod
在建立连接时绕过TLS / SSL证书验证。但是,对于提供证书的客户端,
mongos
或mongod
使用指定的根证书链执行证书验证,CAFile
并拒绝具有无效证书的客户端。net.ssl.allowConnectionsWithoutCertificates
如果您的混合部署包含不能或不能向mongos
或提供证书的客户端,请使用该选项mongod
。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
allowInvalidCertificates
输入:boolean
启用或禁用群集中其他服务器上的TLS / SSL证书的验证检查,并允许使用无效证书进行连接。
注意
从MongoDB 4.0开始,如果您指定
--sslAllowInvalidCertificates
或使用x.509身份验证,则无效证书仅足以建立TLS / SSL连接,但 不足以进行身份验证。ssl.allowInvalidCertificates: true
使用该
net.ssl.allowInvalidCertificates
设置时,MongoDB会记录有关使用无效证书的警告。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
allowInvalidHostnames
输入:boolean
默认值:False
版本3.0中的新功能。
如果
net.ssl.allowInvalidHostnames
是true
,MongoDB的禁用TLS / SSL证书的主机名的验证,允许mongod
连接到MongoDB的情况下,如果主机名的证书不指定主机名匹配。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
net.ssl.
disabledProtocols
输入:string
3.0.7版中的新功能。
阻止使用TLS / SSL运行的MongoDB服务器接受使用特定协议的传入连接。要指定多个协议,请使用逗号分隔的协议列表。
net.ssl.disabledProtocols
识别以下协议:TLS1_0
,TLS1_1
,TLS1_2
,并开始在版本4.0.4(和3.6.9)TLS1_3
。- 在macOS上,您无法禁用
TLS1_1
和保留两者TLS1_0
并TLS1_2
启用。例如,您必须至少禁用其他两个中的一个TLS1_0,TLS1_1
。 - 要列出多个协议,请指定为逗号分隔的协议列表。例如
TLS1_0,TLS1_1
。 - 指定无法识别的协议将阻止服务器启动。
- 指定的禁用协议会覆盖任何默认禁用的协议。
从版本4.0开始,如果系统上有TLS 1.1+,MongoDB将禁用TLS 1.0。要启用已禁用TLS 1.0,指定
none
给net.ssl.disabledProtocols
。请参见禁用TLS 1.0。副本集和分片集群的成员必须至少说一个共同的协议。
也可以看看
- 在macOS上,您无法禁用
-
net.ssl.
FIPSMode
输入:boolean
启用或禁用使用TLS / SSL库的FIPS模式为
mongos
或mongod
。您的系统必须具有符合FIPS的库才能使用该net.ssl.FIPSMode
选项。注意
FIPS兼容的TLS / SSL仅在MongoDB Enterprise中可用。有关更多信息,请参阅 配置MongoDB for FIPS。
net.compression
选项
复制
复制
net: compression: compressors: <string>
-
net.compression.
compressors
默认值:snappy
版本3.4中的新功能。
指定用于此实例
mongod
或mongos
实例之间通信的默认压缩器:- 如果实例是副本集或分片群集的一部分,则部署的其他成员
- 一个
mongo
壳 - 支持
OP_COMPRESSED
邮件格式的驱动程序。
MongoDB支持以下压缩器:
在3.6和4.0版本,
mongod
并mongos
默认启用网络压缩与snappy
作为压缩机。要禁用网络压缩,请将值设置为
disabled
。重要
当双方都启用网络压缩时,将压缩消息。否则,各方之间的消息将被解压缩。
如果指定多个压缩器,则列出压缩器的顺序以及通信启动器都很重要。例如,如果
mongo
shell指定了以下网络压缩器zlib,snappy
和mongod
指定snappy,zlib
,则mongo
shell和mongod
uses 之间的消息zlib
。如果各方不共享至少一个公共压缩器,则各方之间的消息是未压缩的。例如,如果
mongo
shell指定网络压缩器zlib
并mongod
指定snappy
,则mongo
shell和之间的消息mongod
不会被压缩。
-
net.
serviceExecutor
输入:string
默认值:同步
版本3.6中的新功能。
确定线程和执行模型
mongos
或mongod
用于执行客户端请求。该--serviceExecutor
选项接受以下值之一:值 描述 synchronous
该 mongos
或mongod
使用同步网络和管理上的每个连接其网络的线程池。以前版本的MongoDB以这种方式管理线程。adaptive
的 mongos
或mongod
与管理关于每个请求基础的线程的自适应线程池使用了新的实验性异步网络模式。当存在比数据库请求更多的非活动连接时,此模式应具有更一致的性能并使用更少的资源。
security
选项
复制
复制
security: keyFile: <string> clusterAuthMode: <string> authorization: <string> transitionToAuth: <boolean> javascriptEnabled: <boolean> redactClientLogData: <boolean> 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> ldap: servers: <string> bind: method: <string> saslMechanisms: <string> queryUser: <string> queryPassword: <string> useOSDefaults: <boolean> transportSecurity: <string> timeoutMS: <int> userToDNMapping: <string> authz: queryTemplate: <string>
-
security.
keyFile
输入:string
密钥文件的路径,用于存储MongoDB实例用于在分片集群或副本集中相互进行身份验证的共享密钥 。
keyFile
暗示security.authorization
。有关更多信息,请参阅内部验证
-
security.
clusterAuthMode
输入:string
默认值:keyFile
版本2.6中的新功能。
用于群集身份验证的身份验证模式。如果使用 内部x.509身份验证,请在此处指定。此选项可以具有以下值之一:
值 描述 keyFile
使用密钥文件进行身份验证。只接受密钥文件。 sendKeyFile
用于滚动升级目的。发送密钥文件进行身份验证,但可以接受密钥文件和x.509证书。 sendX509
用于滚动升级目的。发送x.509证书进行身份验证,但可以接受密钥文件和x.509证书。 x509
推荐的。发送x.509证书以进行身份验证,并仅接受x.509证书。 从版本3.4开始,如果
--sslCAFile
或未ssl.CAFile
指定且未使用x.509身份验证,则在连接到启用TLS / SSL的服务器时将使用系统范围的CA证书存储。如果使用x.509身份验证,
--sslCAFile
或ssl.CAFile
必须指定,除非使用--sslCertificateSelector
。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
security.
authorization
输入:string
默认值:已禁用
启用或禁用基于角色的访问控制(RBAC)以管理每个用户对数据库资源和操作的访问。
将此选项设置为以下之一:
值 描述 enabled
用户只能访问已被授予权限的数据库资源和操作。 disabled
用户可以访问任何数据库并执行任何操作。 有关更多信息,请参阅基于角色的访问控制。
该
security.authorization
设置仅适用于mongod
。
-
security.
transitionToAuth
输入:boolean
默认值:False
在新版本3.4:允许
mongod
或mongos
接受和创造,并从其它身份验证和非认证连接mongod
,并mongos
在部署实例。用于执行副本集或分片集群从非身份验证配置到内部身份验证的滚动转换。需要指定内部身份验证机制,例如security.keyFile
。例如,如果使用密钥文件进行 内部验证中,
mongod
或mongos
创建具有任何经认证的连接mongod
或mongos
在部署使用匹配密钥文件。如果安全机制不匹配,则使用mongod
或mongos
使用非认证连接。A
mongod
或mongos
运行security.transitionToAuth
不会强制执行用户访问控制。用户可以在没有任何访问控制检查的情况下连接到您的部署,并执行读取,写入和管理操作。注意
A
mongod
或mongos
运行内部身份验证,无需security.transitionToAuth
客户端使用用户访问控制进行连接。更新客户端连接到mongod
或mongos
使用适当的用户 重新启动之前mongod
或mongos
没有security.transitionToAuth
。
-
security.
javascriptEnabled
输入:boolean
默认值:True
启用或禁用服务器端JavaScript执行。禁用时,不能使用执行JavaScript代码的服务器端执行的操作,例如
$where
查询运算符,mapReduce
命令和db.collection.mapReduce()
方法,group
命令和db.collection.group()
方法。
-
security.
redactClientLogData
输入:boolean
3.4版中的新功能:仅适用于MongoDB Enterprise。
一个
mongod
或mongos
与运行security.redactClientLogData
重新编辑登录前伴随一个给定的日志事件的任何消息。这可以防止mongod
或mongos
将存储在数据库中的潜在敏感数据写入诊断日志。日志中仍会显示错误或操作代码,行号和源文件名等元数据。security.redactClientLogData
与静态加密和 TLS / SSL(传输加密)结合使用, 以帮助符合法规要求。例如,MongoDB部署可能会在一个或多个集合中存储个人身份信息(PII)。的
mongod
或mongos
记录的事件,如那些涉及CRUD操作,分片的元数据等,这是可能的mongod
或者mongos
可以暴露PII因为这些测井操作的一部分。Amongod
或mongos
running withsecurity.redactClientLogData
在输出到日志之前删除伴随这些事件的任何消息,从而有效地删除PII。由于缺少与日志事件相关的数据,因此运行
mongod
或mongos
运行的诊断security.redactClientLogData
可能更加困难。有关日志输出效果的示例,请参阅 进程日志记录手册页security.redactClientLogData
。您可以在运行
mongod
或mongos
使用setParameter
database命令时启用或禁用日志编辑。复制
复制db.adminCommand( { setParameter: 1, redactClientLogData : true | false } )
密钥管理配置选项
复制
复制
security: enableEncryption: <boolean> encryptionCipherMode: <string> encryptionKeyFile: <string> kmip: keyIdentifier: <string> rotateMasterKey: <boolean> serverName: <string> port: <string> clientCertificateFile: <string> clientCertificatePassword: <string> clientCertificateSelector: <string> serverCAFile: <string>
-
security.
enableEncryption
输入:boolean
默认值:False
版本3.2中的新功能:为WiredTiger存储引擎启用加密。您必须设置为
true
传递加密密钥和配置。企业特色
仅适用于MongoDB Enterprise。
-
security.
encryptionCipherMode
输入:string
默认值:
AES256-CBC
版本3.2中的新功能。
用于静态加密的密码模式:
模式 描述 AES256-CBC
密码块链接模式下的256位高级加密标准 AES256-GCM
伽罗瓦/计数器模式下的256位高级加密标准
仅在Linux上可用。
在4.0版中更改: Windows上的MongoDB Enterprise不再支持
AES256-GCM
。此密码现在仅在Linux上可用。企业特色
仅适用于MongoDB Enterprise。
-
security.
encryptionKeyFile
输入:string
版本3.2中的新功能。
通过KMIP 以外的进程管理密钥时本地密钥文件的路径。仅在通过KMIP以外的流程管理密钥时设置。如果数据已使用KMIP加密,MongoDB将抛出错误。
需要
security.enableEncryption
是true
。企业特色
仅适用于MongoDB Enterprise。
-
security.kmip.
keyIdentifier
输入:string
版本3.2中的新功能。
KMIP服务器中现有密钥的唯一KMIP标识符。包括使用与标识符关联的密钥作为系统密钥。您只能在第一次为
mongod
实例启用加密时使用该设置。要求security.enableEncryption
是真的。如果未指定,MongoDB将请求KMIP服务器创建一个新密钥以用作系统密钥。
如果KMIP服务器无法找到具有指定标识符的密钥,或者数据已使用密钥加密,则MongoDB将抛出错误。
企业特色
仅适用于MongoDB Enterprise。
-
security.kmip.
rotateMasterKey
输入:boolean
默认值:False
版本3.2中的新功能。
如果为true,则旋转主密钥并重新加密内部密钥库。
企业特色
仅适用于MongoDB Enterprise。
也可以看看
-
security.kmip.
serverName
输入:string
版本3.2中的新功能。
运行KMIP服务器的密钥管理解决方案的主机名或IP地址。要求
security.enableEncryption
是真的。企业特色
仅适用于MongoDB Enterprise。
-
security.kmip.
port
输入:string
默认值:5696
版本3.2中的新功能。
KMIP服务器正在侦听的端口号。需要
security.kmip.serverName
提供。要求security.enableEncryption
是真的。企业特色
仅适用于MongoDB Enterprise。
-
security.kmip.
clientCertificateFile
输入:string
版本3.2中的新功能。
包含用于向MongipDB验证KMIP服务器的客户端证书的路径的字符串。需要
security.kmip.serverName
提供。注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
security.kmip.clientCertificateSelector
。企业特色
仅适用于MongoDB Enterprise。
-
security.kmip.
clientCertificatePassword
输入:string
版本3.2中的新功能。
用于解密客户端证书(即
security.kmip.clientCertificateFile
)的密码 ,用于向MongipDB验证KMIP服务器。仅在证书已加密时使用该选项。企业特色
仅适用于MongoDB Enterprise。
-
security.kmip.
clientCertificateSelector
输入:string
版本4.0中的新功能:在Windows和macOS上可用作替代版本
security.kmip.clientCertificateFile
。security.kmip.clientCertificateFile
和security.kmip.clientCertificateSelector
选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择匹配的证书,以将MongoDB验证到KMIP服务器。
security.kmip.clientCertificateSelector
接受格式的参数,<property>=<value>
其中属性可以是以下之一:属性 值类型 描述 subject
ASCII字符串 证书上的主题名称或通用名称 thumbprint
十六进制字符 表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。
在
thumbprint
有时被称为一个fingerprint
。企业特色
仅适用于MongoDB Enterprise。
-
security.kmip.
serverCAFile
输入:string
版本3.2中的新功能。
CA文件的路径。用于验证与KMIP服务器的安全客户端连接。
注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
security.kmip.clientCertificateSelector
。使用安全存储时,您不需要,但也可以指定security.kmip.serverCAFile
。企业特色
仅适用于MongoDB Enterprise。
security.sasl
选项
复制
复制
security: sasl: hostName: <string> serviceName: <string> saslauthdSocketPath: <string>
-
security.sasl.
hostName
输入:string
用于配置SASL和Kerberos身份验证的完全限定服务器域名。SASL主机名仅覆盖SASL和Kerberos配置的主机名。
对于
mongo
外壳等的MongoDB工具连接到新的hostName
,看gssapiHostName
在选项mongo
壳和其他工具。
-
security.sasl.
serviceName
输入:string
使用SASL注册的服务名称。此选项允许您 基于每个实例覆盖Kerberos主体名称的默认Kerberos 服务名称组件。如果未指定,则默认值为。
mongodb
MongoDB仅允许在启动时设置此选项。将
setParameter
不能更改此设置。此选项仅在MongoDB Enterprise中可用。
重要
确保您的驱动程序支持备用服务名称。对于
mongo
外壳等的MongoDB工具连接到新的serviceName
,看到的gssapiServiceName
选项。
-
security.sasl.
saslauthdSocketPath
输入:string
UNIX域套接字文件的路径
saslauthd
。
security.ldap
选项
复制
复制
security: ldap: servers: <string> bind: method: <string> saslMechanisms: <string> queryUser: <string> queryPassword: <string> useOSDefaults: <boolean> transportSecurity: <string> timeoutMS: <int> userToDNMapping: <string> authz: queryTemplate: <string>
-
security.ldap.
servers
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
用于对其执行LDAP操作
mongod
或对其mongos
执行身份验证的LDAP服务器,或确定用户有权对给定数据库执行的操作。如果指定的LDAP服务器具有任何复制的实例,则可以在逗号分隔的列表中指定每个复制的服务器的主机和端口。如果LDAP基础结构将LDAP目录分区到多个LDAP服务器上,请将其任何复制实例指定一个 LDAP服务器
security.ldap.servers
。MongoDB支持RFC 4511 4.1.10中定义的以下LDAP引用。不要security.ldap.servers
用于列出基础架构中的每个LDAP服务器。可以在运行
mongod
或mongos
使用时 配置此设置setParameter
。如果未设置,
mongod
或mongos
无法使用LDAP身份验证或授权。
-
security.ldap.bind.
queryUser
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
身份与
mongod
或mongos
结合如,连接到或LDAP服务器上执行查询时。仅在满足以下任何条件时才需要:
- 使用LDAP授权。
- 使用LDAP查询
security.ldap.userToDNMapping
。 - LDAP服务器不允许匿名绑定
您必须使用
queryUser
与queryPassword
。如果未设置,
mongod
或者mongos
不会尝试绑定到LDAP服务器。可以在运行
mongod
或mongos
使用时 配置此设置setParameter
。注意
Windows MongoDB部署可以使用
bindWithOSDefaults
而不是queryUser
和queryPassword
。你不能同时指定queryUser
,并bindWithOSDefaults
在同一时间。
-
security.ldap.bind.
queryPassword
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
用于在使用时绑定到LDAP服务器的密码
queryUser
。您必须使用queryPassword
与queryUser
。如果未设置,
mongod
或者mongos
不会尝试绑定到LDAP服务器。可以在运行
mongod
或mongos
使用时 配置此设置setParameter
。注意
Windows MongoDB部署可以使用
bindWithOSDefaults
而不是queryPassword
和queryPassword
。你不能同时指定queryPassword
,并bindWithOSDefaults
在同一时间。
-
security.ldap.bind.
useOSDefaults
输入:boolean
默认值:False
版本3.4中的新功能:仅适用于Windows平台的MongoDB Enterprise。
连接到LDAP服务器时,允许
mongod
或mongos
使用Windows登录凭据进行身份验证或绑定。仅在以下情况下需
- 使用LDAP授权。
- 使用LDAP查询。
username transformation
- LDAP服务器不允许匿名绑定
-
security.ldap.bind.
method
输入:string
默认值:简单
3.4版中的新功能:仅适用于MongoDB Enterprise。
用于向LDAP服务器进行身份验证的方法
mongod
或mongos
用途。使用queryUser
和queryPassword
连接LDAP服务器。method
支持以下值:如果指定
sasl
,则可以使用配置可用的SASL机制security.ldap.bind.saslMechanisms
。mongod
或mongos
默认使用DIGEST-MD5
机制。
-
security.ldap.bind.
saslMechanisms
输入:string
默认值:DIGEST-MD5
3.4版中的新功能:仅适用于MongoDB Enterprise。
逗号分隔的SASL机制列表,
mongod
或者mongos
在对LDAP服务器进行身份验证时可以使用。的mongod
或mongos
与LDAP服务器必须同意在至少一种机制。的mongod
或mongos
动态加载在运行时安装在主机上的任何SASL机制库。安装和配置适当的库两者的所选择的SASL机构(一个或多个)
mongod
或mongos
主机和远程LDAP服务器主机。默认情况下,您的操作系统可能包含某些SASL库。请参阅与每个SASL机制关联的文档,以获取有关安装和配置的指导。如果使用的是
GSSAPI
与使用SASL机制 Kerberos身份验证,验证了以下mongod
或mongos
主机:-
Linux
- 在
KRB5_CLIENT_KTNAME
环境变量解决客户的名称Linux的密钥表文件 的主机。有关Kerberos环境变量的更多信息,请参阅 Kerberos文档。 - 客户端密钥表包括 用户主要为
mongod
或mongos
连接到LDAP服务器时要使用和执行LDAP查询。
- 在
-
Windows
- 如果连接到Active Directory服务器,Windows Kerberos配置会 在用户登录系统时自动生成
Ticket-Granting-Ticket
。设置
useOSDefaults
为 在连接到Active Directory服务器时
true
允许
mongod
或
mongos
使用生成的凭据并执行查询。
设置
method
为sasl
使用此选项。注意
有关SASL机制的完整列表,请参阅 IANA列表。请参阅LDAP或Active Directory服务的文档,以确定与服务兼容的SASL机制。
MongoDB不是SASL机制库的来源,MongoDB文档也不是安装或配置任何给定SASL机制的权威来源。有关文档和支持,请遵循SASL机制库供应商或所有者。
有关SASL的更多信息,请遵循以下资源:
- 对于Linux,请参阅Cyrus SASL文档。
- 对于Windows,请参阅Windows SASL文档。
-
-
security.ldap.
transportSecurity
输入:string
默认值:tls
3.4版中的新功能:仅适用于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
禁用TLS / SSL之间mongod
或mongos
和LDAP服务器。警告
设置
transportSecurity
到none
发送明文信息之间可能凭证mongod
或mongos
和LDAP服务器。
-
security.ldap.
timeoutMS
输入:int
默认值:10000
3.4版中的新功能:仅适用于MongoDB Enterprise。
以毫秒为单位
mongod
或mongos
应等待LDAP服务器响应请求的时间量。timeoutMS
如果失败源是连接超时,则增加值可能会阻止MongoDB服务器和LDAP服务器之间的连接失败。减少值会timeoutMS
减少MongoDB等待LDAP服务器响应的时间。可以在运行
mongod
或mongos
使用时 配置此设置setParameter
。
-
security.ldap.
userToDNMapping
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
将提供给用户名
mongod
或mongos
用于身份验证的用户名映射到LDAP专有名称(DN)。userToDNMapping
在以下情况下,您可能需要使用将用户名转换为LDAP DN:- 使用简单的LDAP绑定执行LDAP身份验证,其中用户使用不是完整LDAP DN的用户名对MongoDB进行身份验证。
- 使用它需要DN。
LDAP authorization query template
- 使用不同的身份验证机制(例如x509,kerberos)将使用身份验证的客户端的用户名转换为完整的LDAP DN以进行授权。
userToDNMapping
期望引用封闭的JSON字符串表示有序的文档数组。每个文档都包含一个正则表达式match
以及用于转换传入用户名的模板substitution
或ldapQuery
模板。数组中的每个文档都具有以下形式:
复制
复制{ match: "<regex>" substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>" }
领域 描述 例 match
ECMAScript格式的正则表达式(regex),用于匹配提供的用户名。每个括号括起的部分表示由 substitution
或使用的正则表达式捕获组ldapQuery
。"(.+)ENGINEERING"
"(.+)DBA"
substitution
LDAP专有名称(DN)格式化模板,用于将
match
正则表达式匹配的认证名称转换为LDAP DN。每个大括号括起来的数字值都由通过正则表达式从认证用户名中提取的相应正则表达式捕获组替换match
。替换的结果必须是RFC4514转义字符串。
"cn={0},ou=engineering,dc=example,dc=com"
ldapQuery
一种LDAP查询格式模板,用于将 match
正则表达式匹配的身份验证名称插入到依赖于RFC4515和RFC4516编码的LDAP查询URI中。每个大括号括起来的数值都将由通过表达式从认证用户名中提取的相应正则表达式捕获组替换match
。mongod
或者mongos
对LDAP服务器执行查询以检索经过身份验证的用户的LDAP DN。mongod
或者只mongos
需要一个返回的结果即可使转换成功,mongod
或者mongos
跳过此转换。"ou=engineering,dc=example,dc=com??one?(user={0})"
注意
的解释 RFC4514, RFC4515, RFC4516,或LDAP查询超出范围的MongoDB的文档。请直接查看RFC或使用您首选的LDAP资源。
对于阵列中的每个文档,您必须使用
substitution
或ldapQuery
。您不能在同一文档中指定两者。执行身份验证或授权,
mongod
或mongos
按给定顺序逐步遍历阵列中的每个文档时,请根据match
过滤器检查身份验证用户名。如果找到匹配项,mongod
或mongos
应用转换并使用输出来验证用户。mongod
或者mongos
不检查数组中的剩余文档。如果给定文档与提供的身份验证名称不匹配,或者文档描述的转换失败,
mongod
或者mongos
继续通过文档列表以查找其他匹配项。如果在任何文档中找不到匹配项,mongod
或mongos
返回错误。例
以下显示了两个转换文档。第一个文档与任何以字符串结尾的字符串匹配
@ENGINEERING
,将后缀之前的任何内容放入正则表达式捕获组中。第二个文档与任何以字符串结尾的字符串匹配@DBA
,将后缀之前的任何内容放入正则表达式捕获组中。重要
您必须将数组
userToDNMapping
作为字符串传递给它。复制
复制"[ { match: "(.+)@ENGINEERING.EXAMPLE.COM", substitution: "cn={0},ou=engineering,dc=example,dc=com" }, { match: "(.+)@DBA.EXAMPLE.COM", ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})" } ]"
具有用户名的用户
alice@ENGINEERING.EXAMPLE.COM
与第一个文档匹配。正则表达式捕获组{0}
对应于字符串alice
。结果输出是DN"cn=alice,ou=engineering,dc=example,dc=com"
。具有用户名的用户
bob@DBA.EXAMPLE.COM
与第二个文档匹配。正则表达式捕获组{0}
对应于字符串bob
。结果输出是LDAP查询"ou=dba,dc=example,dc=com??one?(user=bob)"
。mongod
或者mongos
对LDAP服务器执行此查询,返回结果"cn=bob,ou=dba,dc=example,dc=com"
。如果
userToDNMapping
未设置,mongod
或mongos
在尝试针对LDAP服务器对用户进行身份验证或授权时不对用户名应用任何转换。可以在运行
mongod
或mongos
使用setParameter
database命令配置此设置。
-
security.ldap.authz.
queryTemplate
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
格式化的相对LDAP查询URL,符合RFC4515和RFC4516,
mongod
用于获取经过身份验证的用户所属的LDAP组。该查询与指定的主机相关security.ldap.servers
。使用
{USER}
URL中的占位符替换经过身份验证的用户名,或者如果userToDNMapping
指定了a,则使用转换后的用户名。构造查询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
database命令在运行时配置此设置。注意
RFC4515, RFC4516或LDAP查询的解释超出了MongoDB文档的范围。请直接查看RFC或使用您首选的LDAP资源。
setParameter
选项
-
setParameter
设置MongoDB服务器参数中描述的MongoDB参数或 参数
要在YAML配置文件中设置参数,请使用以下格式:
复制
复制setParameter: <parameter1>: <value1> <parameter2>: <value2>
例如,要
enableLocalhostAuthBypass
在配置文件中指定:复制
复制setParameter: enableLocalhostAuthBypass: false
LDAP参数
-
setParameter.
ldapUserCacheInvalidationInterval
输入:int
默认值:30
与使用LDAP授权的服务器
mongod
或mongos
服务器一起使用。外部用户缓存刷新之间的间隔(以秒为单位)
mongod
或mongos
等待。在外部用户缓存之后mongod
,mongos
刷新下一个LDAP授权用户的操作,MongoDB从LDAP服务器重新获取授权数据。增加指定的值会增加时间量,
mongod
或者mongos
LDAP服务器可能不同步,但会减少LDAP服务器上的负载。相反,减小指定的值会减少时间,mongod
或者mongos
在增加LDAP服务器上的负载时LDAP服务器可能会不同步。
复制
复制
setParameter: ldapUserCacheInvalidationInterval: <int>
storage
选项
复制
复制
storage: dbPath: <string> indexBuildRetry: <boolean> repairPath: <string> journal: enabled: <boolean> commitIntervalMs: <num> directoryPerDB: <boolean> syncPeriodSecs: <int> engine: <string> mmapv1: preallocDataFiles: <boolean> nsSize: <int> quota: enforced: <boolean> maxFilesPerDB: <int> smallFiles: <boolean> journal: debugFlags: <int> commitIntervalMs: <num> wiredTiger: engineConfig: cacheSizeGB: <number> journalCompressor: <string> directoryForIndexes: <boolean> collectionConfig: blockCompressor: <string> indexConfig: prefixCompression: <boolean> inMemory: engineConfig: inMemorySizeGB: <number>
-
storage.
dbPath
输入:string
默认值:
/data/db
在Linux和macOS上,\data\db
在Windows上mongod
实例存储其数据的目录。如果使用程序包管理系统安装了MongoDB,请检查
/etc/mongod.conf
程序包提供的 文件以查看指定的目录。该
storage.dbPath
设置仅适用于mongod
。Linux软件包init脚本不希望
storage.dbPath
更改默认值。如果使用Linux软件包并进行更改storage.dbPath
,则必须使用自己的init脚本并禁用内置脚本。
-
storage.
indexBuildRetry
输入:boolean
默认值:True
指定是否
mongod
在下次启动时重建不完整的索引。这适用于在mongod
索引构建过程中关闭或停止后重新启动的情况。在这种情况下,mongod
始终删除任何不完整的索引,然后,默认情况下,尝试重建它们。要停止mongod
重建索引,请将此选项设置为false
。在版本4.0中更改:该设置
storage.indexBuildRetry
不能与replication.replSetName
。一起使用 。该
storage.indexBuildRetry
设置仅适用于mongod
。
-
storage.
repairPath
输入:string
默认值:
_tmp_repairDatabase_<num>
下的目录dbPath
。仅适用于MMAPv1存储引擎。
MongoDB在
--repair
操作期间将使用的工作目录 。当--repair
完成后,storage.repairPath
目录是空的,并且dbPath
包含了修复的文件。该
storage.repairPath
设置仅适用于mongod
。
-
storage.journal.
enabled
输入:boolean
默认值:
true
在64位系统上,false
在32位系统上启用或禁用持久性日志以确保数据文件保持有效和可恢复。此选项仅在您指定
storage.dbPath
设置时适用 。mongod
默认情况下启用日记功能。该
storage.journal.enabled
设置仅适用于mongod
。从MongoDB 4.0开始,您无法指定
--nojournal
选项或使用WiredTiger存储引擎的副本集成员。storage.journal.enabled: false
-
storage.journal.
commitIntervalMs
类型:数字
默认值:100或30
版本3.2中的新功能。
mongod
进程允许在日志操作之间的最长时间(以毫秒为单位)。值的范围为1到500毫秒。较低的值会增加日志的持久性,但会牺牲磁盘性能。默认日记帐提交间隔为100毫秒。在MMAPv1上,如果日志与数据文件位于不同的块设备(例如,物理卷,RAID设备或LVM卷)上,则默认日志提交间隔为30毫秒。另外,在MMAPv1上,当一个写操作处于
j:true
挂起状态时,mongod
将减少commitIntervalMs
到设定值的三分之一。在WiredTiger上,默认日志提交间隔为100毫秒。此外,写入
j:true
将导致日志的立即同步。
-
storage.
directoryPerDB
输入:boolean
默认值:False
当
true
,MongoDB使用单独的目录来存储每个数据库的数据。目录位于storage.dbPath
目录下,每个子目录名称对应于数据库名称。在3.0版中更改:要更改
storage.directoryPerDB
现有部署的选项,必须mongod
使用新storage.directoryPerDB
值和新数据目录(storage.dbPath
值)重新启动实例,然后重新填充数据。- 对于独立实例,您可以
mongodump
在现有实例上使用,停止实例,使用新storage.directoryPerDB
值和新数据目录重新启动 ,并用于mongorestore
填充新数据目录。 - 对于副本集,您可以通过停止辅助成员,使用新
storage.directoryPerDB
值和 新数据目录重新启动来以滚动方式进行更新,并使用初始同步来填充新数据目录。要更新所有成员,请先从辅助成员开始。然后逐步降低主要成员,并更新降低成员。
该
storage.directoryPerDB
设置仅适用于mongod
。- 对于独立实例,您可以
-
storage.
syncPeriodSecs
类型:数字
默认值:60
MongoDB通过fsync操作将数据刷新到数据文件之前可以经过的时间。
不要在生产系统上设置此值。在几乎所有情况下,您都应该使用默认设置。
警告
如果设置
storage.syncPeriodSecs
为0
,MongoDB将不会将内存映射文件同步到磁盘。该
mongod
过程非常快速地将数据写入日志并且懒惰地写入数据文件。storage.syncPeriodSecs
对没有任何影响journal
的文件或日志,但是如果storage.syncPeriodSecs
设置为0
杂志最终将消耗所有可用的磁盘空间。如果设置storage.syncPeriodSecs
以0
用于测试目的,你也应该设置--nojournal
到true
。该
serverStatus
命令通过backgroundFlushing
字段报告后台刷新线程的状态。该
storage.syncPeriodSecs
设置仅适用于mongod
。
-
storage.
engine
默认值:
wiredTiger
版本4.0中已更改: MongoDB不推荐使用MMAPv1存储引擎。
mongod
数据库的存储引擎。可用值包括:值 描述 wiredTiger
指定WiredTiger存储引擎。 inMemory
指定内存存储引擎。
3.2版中的新功能:仅适用于MongoDB Enterprise。
mmapv1
(在MongoDB 4.0中不推荐使用)指定MMAPv1存储引擎。 如果您尝试启动
mongod
一个storage.dbPath
包含通过比指定的其他存储引擎产生的数据文件storage.engine
,mongod
将拒绝启动。
storage.mmapv1
选项
弃用
MongoDB 4.0弃用了MMAPv1存储引擎,并将在以后的版本中删除MMAPv1。要将MMAPv1存储引擎部署更改为 WiredTiger存储引擎,请参阅:
复制
复制
storage: mmapv1: preallocDataFiles: <boolean> nsSize: <int> quota: enforced: <boolean> maxFilesPerDB: <int> smallFiles: <boolean> journal: debugFlags: <int> commitIntervalMs: <num>
-
storage.mmapv1.
preallocDataFiles
输入:boolean
默认值:True
仅适用于MMAPv1存储引擎。
启用或禁用数据文件的预分配。默认情况下,MongoDB不预先分配数据文件。
-
storage.mmapv1.
nsSize
类型:整数
默认值:16
仅适用于MMAPv1存储引擎。
命名空间文件的默认大小,即以文件结尾的文件
.ns
。每个集合和索引都算作命名空间。使用此设置可控制新创建的命名空间文件的大小。此选项对现有文件没有影响。命名空间文件的最大大小为2047兆字节。默认值16兆字节提供大约24,000个命名空间。
该
storage.mmapv1.nsSize
设置仅适用于mongod
。
-
storage.mmapv1.quota.
enforced
类型:布尔值
默认值:false
仅适用于MMAPv1存储引擎。
启用或禁用每个数据库可以拥有的数字数据文件的最大限制。使用该
storage.mmapv1.quota.enforced
选项运行时,MongoDB每个数据库最多包含8个数据文件。使用调整配额storage.quota.maxFilesPerDB
。
-
storage.mmapv1.quota.
maxFilesPerDB
类型:整数
默认值:8
仅适用于MMAPv1存储引擎。
每个数据库的数据文件数限制。
storage.mmapv1.quota.maxFilesPerDB
选项要求您设置storage.quota.enforced
。
-
storage.mmapv1.
smallFiles
输入:boolean
默认值:False
仅适用于MMAPv1存储引擎。
当
true
,MongoDB使用较小的默认文件大小。该storage.mmapv1.smallFiles
选项减少了数据文件的初始大小,并将最大大小限制为512 MB。storage.mmapv1.smallFiles
还将每个日志 文件的大小从1千兆字节减少到128兆字节。使用storage.mmapv1.smallFiles
,如果你有大量的数据库,每个保存数据少量。该
storage.mmapv1.smallFiles
选项可能导致mongod
实例创建大量文件,这可能会影响较大数据库的性能。该
storage.mmapv1.smallFiles
设置仅适用于mongod
。
-
storage.mmapv1.journal.
debugFlags
类型:整数
仅适用于MMAPv1存储引擎。
提供测试功能。不适用于一般用途,在系统异常关闭的情况下会影响数据文件的完整性。
-
storage.mmapv1.journal.
commitIntervalMs
类型:数字
从版本3.2开始不推荐使用: MongoDB 3.2弃用了该
storage.mmapv1.journal.commitIntervalMs
设置。请storage.journal.commitIntervalMs
改用。不推荐使用的设置充当新
storage.journal.commitIntervalMS
设置的别名, 并适用于MMAPv1或WiredTiger存储引擎。
storage.wiredTiger
选项
复制
复制
storage: wiredTiger: engineConfig: cacheSizeGB: <number> journalCompressor: <string> directoryForIndexes: <boolean> collectionConfig: blockCompressor: <string> indexConfig: prefixCompression: <boolean>
-
storage.wiredTiger.engineConfig.
cacheSizeGB
输入:float
WiredTiger将用于所有数据的内部缓存的最大大小。
在版本3.4中更改:值的范围可以从256MB到10TB,并且可以是浮点数。此外,默认值也已更改。
从3.4开始,WiredTiger内部缓存默认使用较大的一个:
- 50%(RAM – 1 GB),或
- 256 MB。
例如,在总共4GB RAM的系统上,WiredTiger缓存将使用1.5GB的RAM()。相反,总共1.25 GB RAM的系统将为WiredTiger缓存分配256 MB,因为这超过总RAM的一半减去1千兆字节()。
0.5 * (4 GB -1 GB) = 1.5 GB
0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB
避免将WiredTiger内部缓存大小增加到其默认值以上。
使用WiredTiger,MongoDB同时使用WiredTiger内部缓存和文件系统缓存。
通过文件系统缓存,MongoDB自动使用WiredTiger缓存或其他进程未使用的所有可用内存。
注意
该
storage.wiredTiger.engineConfig.cacheSizeGB
限制WiredTiger内部高速缓存的大小。操作系统将使用可用的空闲内存用于文件系统缓存,这允许压缩的MongoDB数据文件保留在内存中。此外,操作系统将使用任何空闲RAM来缓冲文件系统块和文件系统缓存。为了容纳额外的RAM使用者,您可能必须减少WiredTiger内部缓存大小。
默认的WiredTiger内部缓存大小值假定
mongod
每台计算机有一个实例。如果单个计算机包含多个MongoDB实例,则应减少该设置以适应其他mongod
实例。如果您
mongod
在无法访问系统中所有可用RAM 的容器(例如lxc
,cgroups
Docker等)中运行,则必须设置为小于容器中可用RAM量的值。确切的数量取决于容器中运行的其他进程。storage.wiredTiger.engineConfig.cacheSizeGB
-
storage.wiredTiger.engineConfig.
journalCompressor
默认值:snappy
版本3.0.0中的新功能。
用于压缩WiredTiger日志数据的压缩类型。
可用的压缩机有:
-
storage.wiredTiger.engineConfig.
directoryForIndexes
输入:boolean
默认值:false
版本3.0.0中的新功能。
当
storage.wiredTiger.engineConfig.directoryForIndexes
是true
,mongod
存储在数据(即下单独子目录索引和集合storage.dbPath
)目录。具体而言,mongod
将索引存储在已命名的子目录中index
,并将集合数据存储在名为的子目录中collection
。通过使用符号链接,您可以为索引指定其他位置。具体来说,当
mongod
实例未 运行时,将index
子目录移动到目标,并index
在数据目录下创建一个指向新目标的符号链接。
-
storage.wiredTiger.collectionConfig.
blockCompressor
默认值:snappy
版本3.0.0中的新功能。
用于压缩集合数据的默认压缩类型。您可以在创建集合时基于每个集合覆盖此设置。
可用的压缩机有:
storage.wiredTiger.collectionConfig.blockCompressor
影响创建的所有集合。如果更改storage.wiredTiger.collectionConfig.blockCompressor
现有MongoDB部署的值,则所有新集合都将使用指定的压缩器。现有集合将继续使用创建时指定的压缩器,或当时的默认压缩器。
-
storage.wiredTiger.indexConfig.
prefixCompression
默认值:true
版本3.0.0中的新功能。
启用或禁用索引数据的前缀压缩。
指定
true
为索引数据storage.wiredTiger.indexConfig.prefixCompression
启用前缀压缩,或false
禁用索引数据的前缀压缩。该
storage.wiredTiger.indexConfig.prefixCompression
设置会影响所有创建的索引。如果更改storage.wiredTiger.indexConfig.prefixCompression
现有MongoDB部署的值,则所有新索引都将使用前缀压缩。现有索引不受影响。
storage.inmemory
选项
复制
复制
storage: inMemory: engineConfig: inMemorySizeGB: <number>
-
storage.inMemory.engineConfig.
inMemorySizeGB
输入:float
默认值:物理RAM的50%减去1 GB
在版本3.4中更改:值的范围可以从256MB到10TB,并且可以是浮点数。
为内存存储引擎数据分配的最大内存量,包括索引,oplog(如果它
mongod
是副本集,副本集或分片集群元数据的一部分)等。默认情况下,内存存储引擎使用50%的物理RAM减去1 GB。
企业特色
仅适用于MongoDB Enterprise。
operationProfiling
选项
复制
复制
operationProfiling: mode: <string> slowOpThresholdMs: <int> slowOpSampleRate: <double>
-
operationProfiling.
mode
输入:string
默认值:
off
指定应分析哪些操作。以下分析器级别可用:
水平 描述 off
分析器已关闭,不会收集任何数据。这是默认的探查器级别。 slowOp
探查器收集的数据用于超过值的操作 slowms
。all
分析器收集所有操作的数据。 重要
分析可以影响性能并与系统日志共享设置。在生产部署中配置和启用分析器之前,请仔细考虑任何性能和安全隐患。
有关潜在性能下降的更多信息,请参见Profiler Overhead。
-
operationProfiling.
slowOpThresholdMs
类型:整数
默认值:100
该慢的操作时间阈值,单位为毫秒。运行时间超过此阈值的操作被认为很慢。
当
logLevel
设置0
为时,MongoDB 以确定的速率记录对诊断日志的慢速操作slowOpSampleRate
。在更高的logLevel
设置下,无论延迟如何,所有操作都会显示在诊断日志中。版本4.0中已更改:该
slowOpThresholdMs
设置可用于mongod
和mongos
。在早期版本中,slowOpThresholdMs
仅适用于mongod
。
-
operationProfiling.
slowOpSampleRate
类型:双
默认值:1.0
应分析或记录的慢速操作部分。
operationProfiling.slowOpSampleRate
接受0到1之间的值,包括0和1。版本4.0中已更改:该
slowOpSampleRate
设置可用于mongod
和mongos
。在早期版本中,slowOpSampleRate
仅适用于mongod
。
replication
选项
复制
复制
replication: oplogSizeMB: <int> replSetName: <string> secondaryIndexPrefetch: <string> enableMajorityReadConcern: <boolean>
-
replication.
oplogSizeMB
类型:整数
复制操作日志的最大大小(以兆字节为单位)(即oplog)。
注意
从MongoDB 4.0开始,oplog可以超过其配置的大小限制,以避免删除。
majority commit point
默认情况下,该
mongod
进程基于可用的最大空间量创建oplog。对于64位系统,oplog通常占可用磁盘空间的5%。一旦
mongod
第一次创建了oplog,更改replication.oplogSizeMB
选项将不会影响oplog的大小。要更改正在运行的副本集成员的oplog大小,请使用
replSetResizeOplog
管理命令。replSetResizeOplog
使您可以动态调整oplog的大小,而无需重新启动该mongod
过程。有关更多信息,请参阅Oplog大小。
该
replication.oplogSizeMB
设置仅适用于mongod
。
-
replication.
replSetName
输入:string
作为其
mongod
一部分的副本集的名称。副本集中的所有主机必须具有相同的集名称。如果您的应用程序连接到多个副本集,则每个集应具有不同的名称。某些驱动程序按副本集名称对副本集进行连接。
该
replication.replSetName
设置仅适用于mongod
。从MongoDB 4.0开始:
- 该设置
replication.replSetName
不能与之一起使用storage.indexBuildRetry
。 - 对于WiredTiger存储引擎, 不能与之配合使用 。
storage.journal.enabled:false
replication.replSetName
- 该设置
-
replication.
secondaryIndexPrefetch
输入:string
默认值:全部
存储引擎特定功能
replication.secondaryIndexPrefetch
仅适用于mmapv1
存储引擎。在从oplog应用操作之前,副本集的辅助成员加载到内存中的索引。默认情况下,在从oplog应用操作之前,辅助节点将与操作相关的所有索引加载到内存中。
将此设置设置为以下之一:
值 描述 none
辅助节点不会将索引加载到内存中。 all
辅助节点加载与操作相关的所有索引。 _id_only
辅助节点不会在已存在的 _id
索引之外的内存中加载其他索引。
-
replication.
enableMajorityReadConcern
默认值:True
从MongoDB 3.6开始,MongoDB
"majority"
默认支持 读取问题。对于MongoDB 4.0.3+和3.6.1+,您可以禁用读取问题,
"majority"
以防止存储缓存压力使用三成员主辅仲裁器(PSA)体系结构固定部署。有关禁用读取问题的详细信息"majority"
,请参阅 禁用读取关注点。要禁用,请设置
replication.enableMajorityReadConcern
为false。重要
通常,
"majority"
除非必要,否则请避免禁用读取问题。但是,如果您有一个具有主要辅助仲裁(PSA)体系结构的三成员副本集或具有三个成员PSA分片的分片集群,请禁用以防止存储缓存压力导致部署无法运行。禁用
"majority"
读取问题会禁用对更改流的支持。禁用
"majority"
不会影响 多文档事务 ; 即,即使读取关注“多数”被禁用,您也可以为多文档事务指定读取关注“多数”。replication.enableMajorityReadConcern
对MongoDB版本没有影响:4.0.0,4.0.1,4.0.2,3.6.0。
sharding
选项
复制
复制
sharding: clusterRole: <string> archiveMovedChunks: <boolean>
-
sharding.
clusterRole
输入:string
mongod
实例在分片集群中的角色。将此设置设置为以下之一:值 描述 configsvr
将此实例作为配置服务器启动。 27019
默认情况下,实例在端口上启动。shardsvr
启动此实例为碎片。 27018
默认情况下,实例在端口上启动。注意
设置
sharding.clusterRole
要求mongod
实例使用复制运行。要将实例部署为副本集成员,请使用该replSetName
设置并指定副本集的名称。该
sharding.clusterRole
设置仅适用于mongod
。
-
sharding.
archiveMovedChunks
输入:boolean
在3.2版中更改:从3.2开始,MongoDB
false
用作默认值。在块迁移期间,分片不会保存从分片迁移的文档。
auditLog
选项
注意
仅在MongoDB Enterprise 和MongoDB Atlas中可用。
复制
复制
auditLog: destination: <string> format: <string> path: <string> filter: <string>
-
auditLog.
destination
输入:string
版本2.6中的新功能。
设置后,
auditLog.destination
启用审核并指定所有审核事件的位置mongos
或mongod
发送。auditLog.destination
可以具有以下值之一:值 描述 syslog
以JSON格式将审计事件输出到syslog。在Windows上不可用。审核消息的系统日志严重性级别为,
info
并且设施级别为user
。系统日志消息限制可能导致审计消息被截断。审计系统既不会检测到截断,也不会发生错误。
console
将审核事件输出为 stdout
JSON格式。file
将审计事件输出到以指定 auditLog.path
格式指定 的文件auditLog.format
。注意
-
auditLog.
format
输入:string
版本2.6中的新功能。
输出文件的格式审核,如果
destination
是file
。该auditLog.format
选项可以具有以下值之一:值 描述 JSON
将JSON格式的审核事件输出到指定的文件中 auditLog.path
。BSON
将BSON二进制格式的审计事件输出到指定的文件中 auditLog.path
。将审核事件打印为JSON格式的文件会降低服务器性能,而不是以BSON格式打印到文件。
注意
-
auditLog.
path
输入:string
版本2.6中的新功能。
输出文件的审核,如果
destination
有值file
。该auditLog.path
选项可以采用完整路径名或相对路径名。注意
-
auditLog.
filter
类型:文档的字符串表示形式
版本2.6中的新功能。
该过滤器来限制类型的操作的审计系统记录。该选项采用表单的查询文档的字符串表示形式:
复制
复制{ <field1>: <expression1>, ... }
的
<field>
可以是在该监查消息的任何字段,包括字段中返回 PARAM文件。这<expression>
是一个查询条件表达式。要指定审核筛选器,请将筛选器文档括在单引号中以将文档作为字符串传递。
要在配置文件中指定审计筛选器,必须使用配置文件的YAML格式。
注意
snmp
选项
注意
由于SERVER-29352,macOS上的MongoDB Enterprise 不支持SNMP 。
复制
复制
snmp: subagent: <boolean> master: <boolean>
-
snmp.
subagent
输入:boolean
如果
snmp.subagent
是true
,SNMP运行的子代理。有关更多信息,请参阅 在Linux上使用SNMP监控MongoDB。该
snmp.subagent
设置仅适用于mongod
。
-
snmp.
master
输入:boolean
当
snmp.master
是true
,SNMP运行作为一个主站。有关更多信息,请参阅 在Linux上使用SNMP监控MongoDB。该
snmp.master
设置仅适用于mongod
。
mongos
-only选项
在版本3.4中更改: MongoDB 3.4删除sharding.chunkSize
和 sharding.autoSplit
设置。
复制
复制
replication: localPingThresholdMs: <int> sharding: configDB: <string>
-
replication.
localPingThresholdMs
类型:整数
默认值:15
mongos
用于确定哪些辅助副本集成员从客户端传递读取操作的ping时间(以毫秒为单位)。默认值15
对应于所有客户端驱动程序中的默认值。当
mongos
收到允许读取辅助成员的请求时,mongos
意愿:找到具有最低ping时间的集合的成员。
构造一个副本集成员列表,该列表位于该集合中最近的合适成员的15毫秒的ping时间内。
如果为该
replication.localPingThresholdMs
选项指定值,mongos
则将构造在此值允许的延迟范围内的副本成员列表。从此列表中随机选择要读取的成员。
用于成员的
replication.localPingThresholdMs
设置比较的ping时间是最近ping时间的移动平均值,最多每10秒计算一次。因此,某些查询可能会达到超过阈值的成员,直到mongos
重新计算平均值。
-
sharding.
configDB
输入:string
版本3.2中已更改。
从MongoDB 3.2开始,可以将分片群集的配置服务器部署为副本集。副本集配置服务器必须运行WiredTiger存储引擎。MongoDB 3.2不赞成
mongod
为配置服务器使用三个镜像 实例。指定配置服务器副本集名称以及配置服务器副本集的至少一个成员的主机名和端口。
复制
复制sharding: configDB: <configReplSetName>/cfg1.example.net:27017, cfg2.example.net:27017,...
分片
mongos
群集的实例必须指定相同的配置服务器副本集名称,但可以指定副本集的不同成员的主机名和端口。
Windows服务选项
复制
复制
processManagement: windowsService: serviceName: <string> displayName: <string> description: <string> serviceUser: <string> servicePassword: <string>
-
processManagement.windowsService.
serviceName
输入:string
默认值:MongoDB
的服务名称
mongos
或mongod
作为Windows服务运行时。将此名称与和 操作一起使用。net start<name>
net stop <name>
您必须
processManagement.windowsService.serviceName
与--install
或--remove
选项一起使用。
-
processManagement.windowsService.
displayName
输入:string
默认值:MongoDB
在服务管理应用程序上为MongoDB列出的名称。
-
processManagement.windowsService.
description
输入:string
默认值:MongoDB服务器
您必须
processManagement.windowsService.description
与--install
选项一起使用 。对于包含空格的描述,必须将描述括在引号中。
-
processManagement.windowsService.
serviceUser
输入:string
的
mongos
或mongod
在某一用户的上下文中的服务。此用户必须具有“作为服务登录”权限。您必须
processManagement.windowsService.serviceUser
与--install
选项一起使用 。
-
processManagement.windowsService.
servicePassword
输入:string
该密码
<user>
用于mongos
或mongod
与运行时processManagement.windowsService.serviceUser
选项。您必须
processManagement.windowsService.servicePassword
与--install
选项一起使用 。配置文件设置和命令行选项映射¶
下表映射了配置文件设置以及相关
mongod
和mongos
命令行选项。