官方地址 https://docs.mongodb.com/manual/reference/configuration-options/#configuration-filejavascript
如下頁面描述了MongoDB 4.0中可用的配置選項。有關其餘版本MongoDB的配置文件選項,請參閱相應版本的MongoDB手冊。html
您能夠使用配置文件在啓動時配置mongod
和mongos
實例。配置文件包含mongod
與 mongos
命令行選項等效的設置。請參閱配置文件設置和命令行選項映射。java
使用配置文件能夠簡化管理mongod
和 mongos
選項,尤爲適用於大規模部署。您還能夠向配置文件添加註釋以解釋服務器的設置。web
在Linux上,/etc/mongod.conf
使用包管理器安裝MongoDB時會包含默認配置文件。正則表達式
在Windows上, 安裝期間包含默認配置文件。<install directory>/bin/mongod.cfg
mongodb
在macOS上,安裝不包含默認配置文件; 相反,要使用配置文件,請建立一個文件。shell
在2.6版中更改: MongoDB 2.6引入了基於YAML的配置文件格式。的2.4配置文件的格式還是向後兼容性。數據庫
MongoDB配置文件使用YAML格式 [1]。express
如下示例配置文件包含mongod
能夠適應本地配置的幾個設置:json
注意
YAML不支持縮進的製表符:使用空格代替。
包括在官方的MongoDB包的Linux軟件包init腳本依賴於特定的值systemLog.path
,storage.dbPath
和processManagement.fork
。若是在默認配置文件中修改這些設置,則mongod
可能沒法啓動。
[1] | YAML是JSON的超集。 |
要配置mongod
或mongos
使用配置文件,請使用--config
選項或 -f
選項指定配置文件,如如下示例所示:
例如,如下用途:mongod --config <configuration file>
mongos --config <configurationfile>
您還可使用-f
別名指定配置文件,以下所示:
若是您從軟件包安裝並使用系統的init腳本啓動了MongoDB ,那麼您已經在使用配置文件。
systemLog
選項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
類型:整數
默認值: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
:
processManagement
選項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
4.0版中的新功能:適用於MongoDB Community Edition。
啓用或禁用免費的MongoDB雲監控。cloud.monitoring.free.state
接受如下值:
runtime |
默認。您能夠在運行時啓用或禁用免費監控。 要在運行時啓用或禁用免費監控,請參閱 要在運行時使用訪問控制在運行時啓用或禁用免費監視,用戶必須具備所需的權限。查看 |
on |
啓動時啓用免費監控; 即註冊免費監控。在啓動時啓用時,您沒法在運行時禁用自由監視。 |
off |
不管您以前是否註冊過免費監控,都會在啓動時禁用免費監控。在啓動時禁用時,沒法在運行時啓用免費監視。 |
啓用後,自由監控狀態將保持啓用狀態,直到明確禁用。也就是說,每次啓動服務器時都不須要從新啓用。
有關相應的命令行選項,請參閱 --enableFreeMonitoring
。
cloud.monitoring.free.
tag
輸入:string
4.0版中的新功能:適用於MongoDB Community Edition。
用於描述環境上下文的可選標記 標籤能夠在啓動時做爲免費MongoDB雲監控註冊的一部分發送。
有關相應的命令行選項,請參閱 --enableFreeMonitoringTag
。
net
選項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地址更改而致使的配置更改。
要綁定到全部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
到可公開訪問的接口,確保已實施適當的身份驗證和防火牆的限制以保護數據庫的完整性。
或者,將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
默認值: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地址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
從2.6版開始不推薦使用:改成使用。net.ssl.mode: requireSSL
爲mongos
或啓用或禁用TLS / SSL mongod
。
對於默認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證書和密鑰文件。
net.ssl.PEMKeyFile
什麼時候啓用TLS / SSL。net.ssl.PEMKeyFile
或net.ssl.certificateSelector
啓用TLS / SSL時。有關TLS / SSL和MongoDB的詳細信息,請參閱 爲客戶端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.
PEMKeyPassword
輸入:string
用於解密證書密鑰文件的密碼(即 PEMKeyFile
)。net.ssl.PEMKeyPassword
僅在證書密鑰文件已加密時才使用該選項。在全部狀況下,mongos
或mongod
將從全部日誌記錄和報告輸出中編輯密碼。
從MongoDB 4.0開始:
net.ssl.PEMKeyPassword
選項,MongoDB將提示輸入密碼。請參閱TLS / SSL證書密碼。net.ssl.PEMKeyPassword
選項。或者,您可使用安全系統存儲中的證書(請參閱net.ssl.certificateSelector
參考資料)而不是PEM密鑰文件,或使用未加密的PEM文件。有關TLS / SSL和MongoDB的詳細信息,請參閱 爲客戶端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
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摘要標識公鑰。 在 |
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摘要標識公鑰。 在 |
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開始:
net.ssl.clusterPassword
選項,則MongoDB將提示輸入密碼。請參閱TLS / SSL證書密碼。net.ssl.clusterPassword
選項。或者,您可使用安全系統存儲中的證書(請參閱net.ssl.clusterCertificateSelector
)而不是羣集PEM文件,也可使用未加密的PEM文件。有關TLS / SSL和MongoDB的詳細信息,請參閱 爲客戶端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
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
。
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。
副本集和分片集羣的成員必須至少說一個共同的協議。
也能夠看看
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
默認值: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
不會被壓縮。
security
選項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配置。
輸入: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
不會強制執行用戶訪問控制。用戶能夠在沒有任何訪問控制檢查的狀況下鏈接到您的部署,並執行讀取,寫入和管理操做。
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由於這些測井操做的一部分。A mongod
或mongos
running with security.redactClientLogData
在輸出到日誌以前刪除伴隨這些事件的任何消息,從而有效地刪除PII。
因爲缺乏與日誌事件相關的數據,所以運行mongod
或mongos
運行的診斷security.redactClientLogData
可能更加困難。有關日誌輸出效果的示例,請參閱 進程日誌記錄手冊頁security.redactClientLogData
。
您能夠在運行mongod
或mongos
使用setParameter
database命令時啓用或禁用日誌編輯。
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再也不支持 |
企業特點
僅適用於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摘要標識公鑰。 在 |
企業特點
僅適用於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
用於配置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
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服務器上執行查詢時。
僅在知足如下任何條件時才須要:
security.ldap.userToDNMapping
。您必須使用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登陸憑據進行身份驗證或綁定。
僅在如下狀況下需
username transformation
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
useOSDefaults
爲 在鏈接到Active Directory服務器時
true
容許
mongod
或
mongos
使用生成的憑據並執行查詢。
設置method
爲sasl
使用此選項。
注意
有關SASL機制的完整列表,請參閱 IANA列表。請參閱LDAP或Active Directory服務的文檔,以肯定與服務兼容的SASL機制。
MongoDB不是SASL機制庫的來源,MongoDB文檔也不是安裝或配置任何給定SASL機制的權威來源。有關文檔和支持,請遵循SASL機制庫供應商或全部者。
有關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 authorization query template
userToDNMapping
指望引用封閉的JSON字符串表示有序的文檔數組。每一個文檔都包含一個正則表達式match
以及用於轉換傳入用戶名的模板substitution
或ldapQuery
模板。
數組中的每一個文檔都具備如下形式:
領域 | 描述 | 例 |
---|---|---|
match |
ECMAScript格式的正則表達式(regex),用於匹配提供的用戶名。每一個括號括起的部分表示由substitution 或使用的正則表達式捕獲組ldapQuery 。 |
"(.+)ENGINEERING" "(.+)DBA" |
substitution |
LDAP專有名稱(DN)格式化模板,用於將 替換的結果必須是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})" |
對於陣列中的每一個文檔,您必須使用substitution
或 ldapQuery
。您不能在同一文檔中指定二者。
執行身份驗證或受權,mongod
或mongos
按給定順序逐步遍歷陣列中的每一個文檔時,請根據match
過濾器檢查身份驗證用戶名。若是找到匹配項, mongod
或mongos
應用轉換並使用輸出來驗證用戶。mongod
或者mongos
不檢查數組中的剩餘文檔。
若是給定文檔與提供的身份驗證名稱不匹配,或者文檔描述的轉換失敗,mongod
或者mongos
繼續經過文檔列表以查找其餘匹配項。若是在任何文檔中找不到匹配項,mongod
或mongos
返回錯誤。
例
如下顯示了兩個轉換文檔。第一個文檔與任何以字符串結尾的字符串匹配@ENGINEERING
,將後綴以前的任何內容放入正則表達式捕獲組中。第二個文檔與任何以字符串結尾的字符串匹配@DBA
,將後綴以前的任何內容放入正則表達式捕獲組中。
重要
您必須將數組userToDNMapping
做爲字符串傳遞給它。
具備用戶名的用戶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:
若是您的查詢包含屬性,則mongod
假定查詢檢索此實體所屬的DN。
若是查詢不包含屬性,則mongod
假定查詢檢索用戶所屬的全部實體。
對於查詢返回的每一個LDAP DN,mongod
爲受權用戶分配admin
數據庫上的相應角色。若是admin
數據庫上的角色 與DN徹底匹配,則mongod
授予用戶分配給該角色的角色和權限。有關db.createRole()
建立角色的更多信息,請參閱 方法。
例
此LDAP查詢返回LDAP用戶對象memberOf
屬性中列出的全部組 。
您的LDAP配置可能不包含memberOf
做爲用戶架構一部分的屬性,可能擁有用於報告組成員身份的不一樣屬性,或者可能不會經過屬性跟蹤組成員身份。根據您本身的惟一LDAP配置配置查詢。
若是未設置,mongod
則沒法受權用戶使用LDAP。
能夠mongod
使用 setParameter
database命令在運行時配置此設置。
setParameter
選項setParameter
設置MongoDB服務器參數中描述的MongoDB參數或 參數
要在YAML配置文件中設置參數,請使用如下格式:
例如,要enableLocalhostAuthBypass
在配置文件中指定:
setParameter.
ldapUserCacheInvalidationInterval
輸入:int
默認值:30
與使用LDAP受權的服務器mongod
或mongos
服務器一塊兒使用。
外部用戶緩存刷新之間的間隔(以秒爲單位)mongod
或mongos
等待。在外部用戶緩存以後mongod
,mongos
刷新下一個LDAP受權用戶的操做,MongoDB從LDAP服務器從新獲取受權數據。
增長指定的值會增長時間量, mongod
或者mongos
LDAP服務器可能不一樣步,但會減小LDAP服務器上的負載。相反,減少指定的值會減小時間,mongod
或者mongos
在增長LDAP服務器上的負載時LDAP服務器可能會不一樣步。
storage
選項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
默認值: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
輸入:float
WiredTiger將用於全部數據的內部緩存的最大大小。
在版本3.4中更改:值的範圍能夠從256MB到10TB,而且能夠是浮點數。此外,默認值也已更改。
從3.4開始,WiredTiger內部緩存默認使用較大的一個:
例如,在總共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部署的值,則全部新索引都將使用前綴壓縮。現有索引不受影響。
operationProfiling
選項operationProfiling.
mode
輸入:string
默認值:off
指定應分析哪些操做。如下分析器級別可用:
水平 | 描述 |
---|---|
off |
分析器已關閉,不會收集任何數據。這是默認的探查器級別。 |
slowOp |
探查器收集的數據用於超過值的操做slowms 。 |
all |
分析器收集全部操做的數據。 |
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
類型:整數
複製操做日誌的最大大小(以兆字節爲單位)(即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
。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。
auditLog
選項注意
auditLog.
destination
輸入:string
版本2.6中的新功能。
設置後,auditLog.destination
啓用審覈並指定全部審覈事件的位置mongos
或mongod
發送。
auditLog.destination
能夠具備如下值之一:
值 | 描述 |
---|---|
syslog |
以JSON格式將審計事件輸出到syslog。在Windows上不可用。審覈消息的系統日誌嚴重性級別爲, 系統日誌消息限制可能致使審計消息被截斷。審計系統既不會檢測到截斷,也不會發生錯誤。 |
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
選項能夠採用完整路徑名或相對路徑名。
注意
snmp
選項注意
因爲SERVER-29352,macOS上的MongoDB Enterprise 不支持SNMP 。
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
類型:整數
默認值:15
mongos
用於肯定哪些輔助副本集成員從客戶端傳遞讀取操做的ping時間(以毫秒爲單位)。默認值15
對應於全部客戶端驅動程序中的默認值。
當mongos
收到容許讀取輔助成員的請求時, mongos
意願:
找到具備最低ping時間的集合的成員。
構造一個副本集成員列表,該列表位於該集合中最近的合適成員的15毫秒的ping時間內。
若是爲該replication.localPingThresholdMs
選項指定值,mongos
則將構造在此值容許的延遲範圍內的副本成員列表。
今後列表中隨機選擇要讀取的成員。
用於成員的replication.localPingThresholdMs
設置比較的ping時間是最近ping時間的移動平均值,最多每10秒計算一次。所以,某些查詢可能會達到超過閾值的成員,直到mongos
從新計算平均值。
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
命令行選項。