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
。可根据服务器资源(如内存、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
工具),以提升数据库的安全性与稳定性。