MongoDB Ubuntu配置文件解析
MongoDB在Ubuntu系統中的核心配置文件為/etc/mongod.conf,采用YAML格式編寫,用于定義數據庫服務器的行為(如數據存儲、網絡連接、安全策略等)。修改該文件后,需重啟MongoDB服務(sudo systemctl restart mongod)使配置生效。
存儲模塊定義了數據文件的存儲路徑及日志功能,是MongoDB運行的基礎:
dbPath:指定數據文件(如集合、索引)的存儲目錄,默認為/var/lib/mongodb。需確保該目錄存在且具備正確的權限(建議歸屬mongodb:mongodb用戶組)。journal.enabled:是否啟用預寫式日志(WiredTiger引擎默認開啟)。開啟后可保證數據持久性,即使服務器異常崩潰,也能通過日志恢復未完成的事務。日志模塊控制日志的輸出目標、格式及保留策略:
destination:日志輸出目的地,可選file(文件)或syslog(系統日志),默認為file。path:當日志輸出到文件時,指定日志文件的路徑,默認為/var/log/mongodb/mongod.log。logAppend:是否在現有日志文件中追加內容(而非覆蓋),建議設置為true,避免日志丟失。verbosity:日志級別(0-5),默認為0(僅記錄錯誤和警告)。數值越大,日志越詳細(如1記錄信息級日志,2記錄調試日志)。網絡模塊定義了MongoDB的監聽端口及IP綁定規則:
port:MongoDB服務器監聽的端口號,默認為27017??筛鶕枨笮薷模ㄈ绫苊舛丝跊_突),但需確保防火墻允許該端口的流量。bindIp:指定MongoDB綁定的IP地址,可設置為單個IP(如127.0.0.1,僅本地連接)、多個IP(如127.0.0.1,192.168.1.100)或0.0.0.0(允許所有IP連接)。生產環境中,建議限制為特定IP以提升安全性。maxIncomingConnections:允許的最大并發連接數,默認為65536??筛鶕掌髻Y源(如內存、CPU)調整,避免連接數過多導致性能下降。安全模塊用于保障數據庫的訪問安全,主要包括認證與加密:
authorization:是否啟用用戶訪問控制(Access Control)。設置為enabled時,客戶端需通過用戶名和密碼認證才能訪問數據庫(如admin數據庫的管理員賬戶);默認為disabled(不安全,不建議在生產環境中使用)。keyFile:集群節點間通信的身份驗證密鑰文件路徑(用于復制集或分片集群)。密鑰文件需在所有節點上保持一致,且權限設置為400(僅所有者可讀)。clusterAuthMode:集群成員間的認證模式,可選keyFile(密鑰文件,推薦)或x509(X.509證書,適用于高安全需求場景)。默認為keyFile。javascriptEnabled:是否允許在服務器端執行JavaScript腳本(如mapReduce、group命令)。若應用無需這些功能,建議設置為false,減少安全風險。復制集模塊用于配置MongoDB的高可用性(主從復制):
replSetName:復制集的名稱(如myReplSet)。同一復制集中的所有節點需使用相同的名稱,用于標識集群身份。進程管理模塊控制MongoDB的啟動方式及PID文件位置:
fork:是否以守護進程(后臺進程)方式運行MongoDB。設置為true時,MongoDB會在后臺啟動(適用于生產環境);默認為false(前臺運行,僅用于測試)。pidFilePath:PID文件的路徑(存儲MongoDB主進程的ID),默認為/var/run/mongodb/mongod.pid。需確保該目錄存在且具備寫入權限。若需將數據存儲到/data/db目錄,需執行以下步驟:
# 創建目錄并設置權限
sudo mkdir -p /data/db
sudo chown -R mongodb:mongodb /data/db
# 修改配置文件
sudo nano /etc/mongod.conf
# 找到storage部分,修改dbPath
storage:
dbPath: /data/db
# 重啟服務
sudo systemctl restart mongod
啟用身份驗證需兩步:
sudo nano /etc/mongod.conf
# 找到security部分,添加或修改
security:
authorization: enabled
mongo
use admin
db.createUser({
user: "admin",
pwd: "yourStrongPassword",
roles: [{ role: "root", db: "admin" }]
})
exit
若需允許遠程IP訪問MongoDB,需修改net.bindIp:
sudo nano /etc/mongod.conf
# 找到net部分,修改bindIp(如允許所有IP或指定IP)
net:
bindIp: 0.0.0.0 # 或 192.168.1.100,10.0.0.1
port: 27017
# 重啟服務
sudo systemctl restart mongod
注意:允許所有IP連接(0.0.0.0)會帶來安全風險,建議結合防火墻(如ufw)限制訪問來源IP。
mongodb用戶對相關路徑具有讀取/寫入權限(如sudo chown -R mongodb:mongodb /var/lib/mongodb)。setParameter中的選項),建議參考對應版本的官方文檔(如MongoDB 6.0配置文檔)。bindIp、定期備份數據、監控日志(如通過mongostat或mongotop工具),以提升數據庫的安全性與穩定性。