生产环境使用云服务器(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.pswp.cn/bicheng/90712.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

思博伦第二到三层测试仪(打流仪)TestCenter 2U硬件安装及机箱加电_双极未来

&#xff08;1&#xff09;安装板卡&#xff1a;上图中共 4 个红色线框&#xff0c;上边两个红色线条框住的是机箱的左右两侧导轨&#xff0c;下边两条红色 线条框住的是板卡拉手条&#xff08;用于承载板卡PCB的金属板&#xff09;左右两边的边沿。 安装时将拉手条两边的边沿与…

【华为】笔试真题训练_20250611

本篇博客旨在记录自已的笔试刷题的练习&#xff0c;里面注有详细的代码注释以及和个人的思路想法&#xff0c;希望可以给同道之人些许帮助。本人也是小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误或遗漏之处&#xff0c;望各位可以在评论区指正出来&#xff0c;各…

新浪微博APP v14.5.0:连接世界的社交媒体平台

新浪微博APP 是一款广受欢迎的社交媒体应用程序&#xff0c;凭借其强大的功能和丰富的社交生态&#xff0c;成为用户获取信息、表达观点、互动交流的重要平台。最新版 v14.5.0 内置了微博助手 v2.3.0&#xff0c;进一步提升了用户体验和功能多样性。 软件功能 1. 发布微博 用…

静态枚举返回(简单实现字典功能)

枚举缓存策略的实现与应用 通过静态Map缓存枚举类的Class对象&#xff0c;避免每次请求时重复反射加载。核心实现是一个包含枚举类名与对应Class映射的Registry类&#xff1a; public class EnumRegistry {private static final Map<String, Class<?>> ENUM_MAP …

深分页性能问题分析与优化实践

在日常测试工作中&#xff0c;我们经常会遇到分页查询接口&#xff0c;例如&#xff1a; GET /product/search?keyword&pageNum1&pageSize10乍看之下&#xff0c;这样的分页接口似乎并无性能问题&#xff0c;响应时间也很快。但在一次性能压测中&#xff0c;我们复现了…

LeetCode——1957. 删除字符使字符串变好

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;给你一个字符串&#xff0c;然后让你删除几个字符串&#xff0c;让他变成好串&#xff0c;好串的定义就是不要出现连续的3个一样的字符。思路&#xff1a;首先就是要遍历字符串。我们将要返回的字符串定义为ret&…

Aerospike与Redis深度对比:从架构到性能的全方位解析

在高性能键值存储领域&#xff0c;Aerospike与Redis是两款备受关注的产品。Redis以其极致的单机性能和丰富的数据结构成为主流选择&#xff0c;而Aerospike则凭借分布式原生设计和混合存储架构在大规模场景中崭露头角。本文将从架构设计、数据模型、性能表现、扩展性等核心维度…

Linux命令速查手册

一、命令格式与辅助工具类别符号/命令示例说明基本格式commandls -a /home命令 选项 参数管道符ls -lless重定向>df -h > disk_usage.txt覆盖写入文件>>echo "New" >> notes.txt追加写入文件2>ls non_exist 2> error.txt错误输出重定向快捷…

net-snmp添加自定义mib树

首先我们把前面mib2c生成的文件修改 下面重新做了个简单点的MIB树 -- -- -- MIB generated by MG-SOFT Visual MIB Builder Version 6.0 Build 88 -- Saturday, July 26, 2025 at 09:24:54 --ARHANGELSK-GLOBAL-REG DEFINITIONS :: BEGINIMPORTSenterprises, OBJECT-TYPE, M…

【动态规划-斐波那契数列模型】理解动态规划:斐波那契数列的递推模型

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;动态规划是一种解决最优化问题的强大技术&#xff0c;通过将问题分解为子问题并逐步求解来实现高效计算。斐波那契数列是动态规划中经典的应用之一&#xff0c;其递推关系非常适合用动态规划进行优化。通过动态…

微信小程序 自定义带图片弹窗

1. 微信小程序 自定义带图片弹窗1.1. 实现思路使用官方组件实现图片模态弹窗。首先找到官方文档&#xff1a;​显示模态弹窗的API wx.showModal(OBJECT)wx.showModal参数介绍发现并没有设置图片的参数&#xff0c;但是这是一个API&#xff0c;但是组件呢&#xff1f;我并没有在…

私有化大模型架构解决方案构建指南

内容概要本指南旨在为企业提供私有化大模型架构解决方案的全面构建路径&#xff0c;帮助其在保障数据隐私的同时提升业务效率。我们将系统解析关键环节&#xff0c;包括安全部署策略设计、模型训练核心技术、持续优化机制构建以及知识管理实践路径。此外&#xff0c;指南还涵盖…

面试150 查找和最小的K对数字

思路1 超时法&#xff1a;通过两个循环记录三元组[num1,num2,num1num2]然后通过num1num2从小到大进行排序&#xff0c;然后返回前K个对数中的前两个数即可。 class Solution:def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:if n…

vscode目录,右键菜单加入用VSCode打开文件和文件夹(快速解决)(含删除)(脚本)

1.创建文本文件 在桌面右键单击&#xff0c;选择“新建” > “文本文档”&#xff0c;将其命名为“vscode.txt”2.复制代码内容3.修改文件扩展名 右键单击“vscode.txt”文件&#xff0c;选择“重命名”&#xff0c;将文件扩展名从.txt改为.reg&#xff0c;使其成为“vscode…

Chart.js 柱形图详解

Chart.js 柱形图详解 引言 在数据可视化领域&#xff0c;柱形图是一种非常常见的图表类型&#xff0c;它能够直观地展示不同类别或组的数据之间的比较。Chart.js 是一个基于 HTML5 Canvas 的开源库&#xff0c;它提供了一系列的图表绘制功能&#xff0c;其中包括柱形图。本文将…

沉浸式文旅新玩法-基于4D GS技术的真人数字人赋能VR体验升级

线下沉浸式剧场与 LBE VR 相结合&#xff0c;会碰撞出什么样的火花&#xff1f;本次 PICO 视频、东方演艺集团与火山引擎一起&#xff0c;将沉浸式演出《只此周庄》的部分场景复刻到了 VR 世界&#xff0c;让用户在虚拟的古代周庄夜市里&#xff0c;体验了古老的故事以及精彩纷…

C程序内存布局详解

C程序内存布局详解 1. 内存布局概述 C程序在内存中分为以下几个主要区域&#xff08;从低地址到高地址&#xff09;&#xff1a; 代码段&#xff08;.text&#xff09;只读数据段&#xff08;.rodata&#xff09;初始化数据段&#xff08;.data&#xff09;未初始化数据段&…

新手向:Git下载全攻略

Git 的安装与重要性在现代软件开发中&#xff0c;版本控制是必不可少的工具&#xff0c;而 Git 是目前最流行的分布式版本控制系统。无论是个人开发者还是大型团队&#xff0c;Git 都能高效管理代码变更&#xff0c;确保项目历史清晰可追溯。安装 Git 是开发者入门的第一步&…

linux中如何清除history命令

写在前面 使用ssh远程连接客户端连接上linux后操作的命令多了&#xff0c;有时候需要清除对应的历史命令记录&#xff0c;可以通过下面几种方式实现。第一种方法 通过修改.bash_history文件 这是最简单直接的方法&#xff0c;但是只会影响当前用户的历史记录。执行以下命令即可…

PHP插件开发中的一个错误:JSON直接输出导致网站首页异常

问题描述 最近在使用步数统计插件&#xff08;WeFootStep&#xff09;时&#xff0c;发现网站首页完全变成了一段JSON数据&#xff0c;而不是正常的HTML页面。具体表现为首页显示如下内容&#xff1a; {"results":"<li><a href\"https:\/\/blog…