温馨提示×

MongoDB Ubuntu配置文件解析

小樊
40
2025-09-27 17:24:35
栏目: 云计算

MongoDB Ubuntu配置文件解析
MongoDB在Ubuntu系统中的核心配置文件为/etc/mongod.conf,采用YAML格式编写,用于定义数据库服务器的行为(如数据存储、网络连接、安全策略等)。修改该文件后,需重启MongoDB服务(sudo systemctl restart mongod)使配置生效。

一、配置文件核心结构与参数说明

1. storage(存储配置)

存储模块定义了数据文件的存储路径及日志功能,是MongoDB运行的基础:

  • dbPath:指定数据文件(如集合、索引)的存储目录,默认为/var/lib/mongodb。需确保该目录存在且具备正确的权限(建议归属mongodb:mongodb用户组)。
  • journal.enabled:是否启用预写式日志(WiredTiger引擎默认开启)。开启后可保证数据持久性,即使服务器异常崩溃,也能通过日志恢复未完成的事务。

2. systemLog(日志配置)

日志模块控制日志的输出目标、格式及保留策略:

  • destination:日志输出目的地,可选file(文件)或syslog(系统日志),默认为file
  • path:当日志输出到文件时,指定日志文件的路径,默认为/var/log/mongodb/mongod.log
  • logAppend:是否在现有日志文件中追加内容(而非覆盖),建议设置为true,避免日志丢失。
  • verbosity:日志级别(0-5),默认为0(仅记录错误和警告)。数值越大,日志越详细(如1记录信息级日志,2记录调试日志)。

3. net(网络配置)

网络模块定义了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)调整,避免连接数过多导致性能下降。

4. security(安全配置)

安全模块用于保障数据库的访问安全,主要包括认证与加密:

  • authorization:是否启用用户访问控制(Access Control)。设置为enabled时,客户端需通过用户名和密码认证才能访问数据库(如admin数据库的管理员账户);默认为disabled(不安全,不建议在生产环境中使用)。
  • keyFile:集群节点间通信的身份验证密钥文件路径(用于复制集或分片集群)。密钥文件需在所有节点上保持一致,且权限设置为400(仅所有者可读)。
  • clusterAuthMode:集群成员间的认证模式,可选keyFile(密钥文件,推荐)或x509(X.509证书,适用于高安全需求场景)。默认为keyFile
  • javascriptEnabled:是否允许在服务器端执行JavaScript脚本(如mapReducegroup命令)。若应用无需这些功能,建议设置为false,减少安全风险。

5. replication(复制集配置,可选)

复制集模块用于配置MongoDB的高可用性(主从复制):

  • replSetName:复制集的名称(如myReplSet)。同一复制集中的所有节点需使用相同的名称,用于标识集群身份。

6. processManagement(进程管理配置,可选)

进程管理模块控制MongoDB的启动方式及PID文件位置:

  • fork:是否以守护进程(后台进程)方式运行MongoDB。设置为true时,MongoDB会在后台启动(适用于生产环境);默认为false(前台运行,仅用于测试)。
  • pidFilePath:PID文件的路径(存储MongoDB主进程的ID),默认为/var/run/mongodb/mongod.pid。需确保该目录存在且具备写入权限。

二、常见配置修改示例

1. 修改数据存储路径

若需将数据存储到/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 

2. 启用身份验证

启用身份验证需两步:

  • 修改配置文件:
sudo nano /etc/mongod.conf # 找到security部分,添加或修改 security: authorization: enabled 
  • 重启服务后,创建管理员用户(需进入MongoDB shell操作):
mongo use admin db.createUser({ user: "admin", pwd: "yourStrongPassword", roles: [{ role: "root", db: "admin" }] }) exit 

3. 允许远程连接

若需允许远程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。

三、注意事项

  • 配置文件格式:YAML文件对缩进敏感,需使用空格(而非Tab键)缩进,否则会导致解析错误。
  • 权限问题:修改配置文件或数据目录后,需确保mongodb用户对相关路径具有读取/写入权限(如sudo chown -R mongodb:mongodb /var/lib/mongodb)。
  • 版本兼容性:不同版本的MongoDB可能调整了配置参数(如setParameter中的选项),建议参考对应版本的官方文档(如MongoDB 6.0配置文档)。
  • 生产环境建议:启用身份验证、限制bindIp、定期备份数据、监控日志(如通过mongostatmongotop工具),以提升数据库的安全性与稳定性。

0