当前位置: 首页 > news >正文

生产环境使用云服务器(centOS)部署和使用MongoDB

部署MongoDB流程

1. ​安装MongoDB

版本选择建议

  • CentOS 7​:推荐MongoDB 4.4.x(兼容性好)
  • CentOS 8/9​:建议最新稳定版(如6.0+),需单独安装mongodb-database-tools

安装步骤

1.添加官方仓库

# 添加官方仓库(以6.0为例)
sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo

写入以下内容:

[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

2.安装MongoDB

sudo yum install -y mongodb-org

3.启动服务并设开机自启

sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod  # 确认状态为active (running)

4.查看mongoDB的版本

mongod --version

我的输出如下:

db version v7.0.7
Build Info: {
"version": "7.0.7",
"gitVersion": "cfb08e1ab7ef741b4abdd0638351b322514c45bd",
"openSSLVersion": "OpenSSL 1.1.1w  11 Sep 2023",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "rhel80",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}

2.配置文件mongod.conf

1.进入mongod.conf

vi /usr/local/mongodb/etc/mongod.conf

2.测试环境配置的单点副本集

storage:dbPath: /usr/local/mongodb/data/systemLog:destination: filepath: /var/log/mongodb/mongodb.loglogAppend: truenet:port: 27017bindIp: 0.0.0.0processManagement:fork: falsesecurity:authorization: enabledkeyFile: /usr/local/mongodb/mongodb-keyfilereplication:replSetName: "rs0"

3.Systemd 服务文件

1.​新建服务文件。​创建 /etc/systemd/system/mongod.service

sudo vi /etc/systemd/system/mongod.service

2.写入以下内容(根据自己的配置调整)

[Unit]
Description=MongoDB Database Server
After=network.target[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongod.conf
Restart=on-failure
RestartSec=5[Install]
WantedBy=multi-user.target

安全性

访问限制

1.云服务器安全组限制ip来源

2.配置文件限制ip来源

3.更改端口,不使用MongoDB默认端口27017

副本集

生产环境需要至少3个数据承载节点(1个主节点+2个从节点)

安全检查

rs.status()  // 检查所有成员状态
rs.conf()    // 检查配置

系统用户管理

配置MongoDB用户和用户组

在 Debian/Ubuntu 系统上,官方包使用的默认用户/组是 mongodb。​​

​在 RHEL/CentOS/Fedora 等系统上,官方 RPM 包使用的默认用户/组是 mongod。

场景用户/组名原因
CentOS 官方 RPM 包mongodMongoDB 官方为 RHEL 系设计的规范,确保自动化部署的一致性 。
手动二进制安装mongodb社区约定俗成,避免与进程名混淆,且与 Debian 系命名统一 。


1.创建一个名为 "mongodb" 的系统用户组

sudo groupadd mongodb

2.创建一个名为 "mongodb" 的系统用户,属于 mongodb 组,且无法交互式登录

sudo useradd -r -g mongodb -s /bin/false mongodb

useradd:创建新用户的命令
-r:创建系统用户(UID 在系统用户范围内)
-g mongodb:指定用户的主要组为刚创建的 mongodb 组
-s /bin/false:设置用户的登录 shell 为 /bin/false(禁止该用户登录系统)
mongodb:要创建的用户名

3.查看所有用户

cat /etc/passwd

4.查看所有用户组

getent group

5.执行 ps aux | grep mongo 时,将会看到: 

mongod   12345  0.0  0.1  ... /usr/local/mongodb/bin/mongod ...

数据库用户管理

// 查看数据库所有用户
db.getUsers()use admin
db.changeUserPassword("admin", passwordPrompt())  // 交互式重新设置强密码// 删除高风险默认账户
db.dropUser("admin")正常情况下应该新建专用管理账号(禁止使用默认名称,如admin、root)
db.createUser({user: "mongo_admin_7x83",  // 随机化用户名pwd: passwordPrompt(),     // 交互输入强密码roles: [{role: "root", db: "admin"}]
})// 检查所有用户权限
db.runCommand({usersInfo: { forAllDBs: true },showCredentials: true,showPrivileges: true
})


备份数据库(mongodump)

CentOS/RHEL 9 系统自带了 mongodb-database-tools,无需额外配置外部仓库:

1.安装系统自带的 Database Tools

sudo yum install -y mongodb-database-tools

2.备份。应该启用定时备份脚本。

mongodump --host <服务器IP>:27017 \   # 数据库地址--db <数据库名> \           # 指定需迁移的数据库--username <用户> \         # 数据库账号--password <密码> \ --authenticationDatabase admin \  # 认证库名(通常为admin)--gzip \                   # 启用压缩减少传输量--oplog \                  # 关键!确保备份期间数据一致性(副本集必需)--out /backup/prod_dump/   # 备份输出目录

恢复数据库(mongorestore)

如果数据库使用docker部署

1.创建容器内文件夹

docker exec mongo mkdir -p /tmp/backup

2.把备份文件传输到目标服务器

3.恢复数据库

docker exec \mongo_container \mongorestore \--username admin \--password '您的密码' \--authenticationDatabase admin \--gzip \--drop \--db yuxin \/tmp/backup/db

 查看数据库情况命令

sudo systemctl restart mongod  # 或使用你的服务名
sudo tail -f /var/log/mongodb/mongodb.log  # 检查日志确认无报错
http://www.lryc.cn/news/600584.html

相关文章:

  • (React入门上手——指北指南学习(第一节)
  • docker 从主机复制文件到容器外进行编辑
  • MongoDB数据模型
  • vulhub Web Machine(N7)靶场攻略
  • AutoDL 数据盘清理指南:彻底删除 .Trash-0 内文件释放空间
  • “Datawhale AI夏令营”「结构化数据的用户意图理解和知识问答挑战赛」1
  • 网络资源模板--基于Android Studio 实现的简易购物App
  • Java高级之基于Java Attach与Byte-Buddy实现SQL语句增强
  • HDMI-IN调试:双MIPI支持4K60方案
  • 大众化餐饮:把日常过成诗
  • Zama+OpenZeppelin:将机密智能合约带入 DeFi 和数字资产领域
  • 什么是Paimon?Paimon是什么?
  • Claude 4.0 终极编程指南:模型对比、API配置与IDE集成实战
  • ArkData-关系型数据库
  • SWC 深入全面讲解
  • Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活
  • STM32概况
  • AI记忆问题解决方案Basic Memory
  • 实验-OSPF多区域
  • starrocks官网docker部署mysql无法连接
  • 微软中国高级架构师步绍鹏受邀为第十四届PMO大会演讲嘉宾
  • CSP2025模拟赛2(2025.7.26)
  • 使用 Google Earth 的 DEM — 教程。
  • pytest中的rerunfailures的插件(失败重试)
  • 深度学习(鱼书)day03--神经网络(后两节)
  • Spring Boot 3 如何整合 MinIO 实现分布式文件存储?
  • 速通python加密之SHA加密
  • VTK交互——ImageRegion
  • VTK交互——Callback
  • 香港本地和国际金融科技应用