温馨提示×

MongoDB在CentOS中的配置步骤是什么

小樊
47
2025-11-15 20:39:50
栏目: 云计算

在 CentOS 上配置 MongoDB 的完整步骤

一 准备与安装

  • 更新系统并安装必要工具(可选):执行命令:sudo yum update -y,以及 sudo yum install -y wget vim
  • 添加 MongoDB 官方 YUM 仓库(以 4.4 为例,可按需调整版本):
    1. 导入 GPG 密钥:sudo rpm -v --import https://www.mongodb.org/static/pgp/server-4.4.asc
    2. 创建仓库文件:sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo,内容如下:
      [mongodb-org-4.4]
      name=MongoDB Repository
      baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
      gpgcheck=1
      enabled=1
      gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
  • 安装 MongoDB 社区版:sudo yum install -y mongodb-org
  • 说明:部分教程会先安装 EPEL 仓库(如 sudo yum install epel-release),在某些环境下可提升依赖可用性,但并非所有环境都必需。

二 核心配置 mongod.conf

  • 编辑配置文件:sudo vi /etc/mongod.conf,常用关键项如下(YAML 格式):
    storage:
    dbPath: /var/lib/mongo
    journal:
    enabled: true
    systemLog:
    destination: file
    logAppend: true
    path: /var/log/mongodb/mongod.log
    net:
    port: 27017
    bindIp: 127.0.0.1(仅本地)或 0.0.0.0(允许远程,生产建议限定具体 IP)
    security:
    authorization: enabled(启用后需认证)
  • 修改配置后使生效:sudo systemctl restart mongod

三 启动与验证

  • 启动服务并设置开机自启:
    • 启动:sudo systemctl start mongod
    • 自启:sudo systemctl enable mongod
    • 状态:sudo systemctl status mongod(应显示 active (running)
  • 连接测试:
    • 本地连接:mongo
    • 查看版本:db.version()
  • 故障排查:查看日志 /var/log/mongodb/mongod.log;常见问题包括端口占用、目录权限不足、配置语法错误等。

四 远程访问与安全加固

  • 防火墙放行(firewalld):
    • 开放端口:sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
    • 重载规则:sudo firewall-cmd --reload
  • 启用认证与创建管理员:
    1. /etc/mongod.conf 中设置:security.authorization: enabled 并重启服务
    2. 进入 Shell:mongo
    3. 创建管理员(示例赋予超级权限):
      use admin
      db.createUser({ user: “admin”, pwd: “YourStrongP@ssw0rd”, roles: [“root”] })
    4. 认证连接:mongo -u admin -p YourStrongP@ssw0rd --authenticationDatabase admin
  • 安全建议:
    • 避免直接绑定 0.0.0.0,生产环境仅开放必要来源 IP
    • 使用强密码并定期轮换
    • 保持 MongoDB 与系统补丁更新

五 常见问题与进阶

  • 无法启动或端口被占用:检查 /var/log/mongodb/mongod.log,确认 27017 未被其他进程占用,必要时调整端口或释放占用进程。
  • SELinux 拦截(如连接被拒):可临时测试 sudo setenforce 0;生产环境建议通过策略放行而非长期关闭。
  • 目录权限问题:确保数据目录 /var/lib/mongo 与日志目录 /var/log/mongodb 归属 mongod 用户(安装包通常会自动创建并设定)。
  • 进阶部署:需要高可用与水平扩展时,可搭建 副本集分片集群(配置 configsvr/shardsvr 角色与对应端口)。

0