Linux环境下Mongodb部署
文章目录
- 一、系统环境
- 二、MongoDb安装
- 添加MongoDB官方库
- 安装MongoDB
- 配置MongoDB
- 三、MongoDB常见操作
- 四、MongoDB用户管理
- 创建用户
- 修改密码
- 删除用户
- 五、启用安全控制
- 六、备份与还原
- 1. 备份
- 2. 恢复
- 七、外部工具连接MongoDB
一、系统环境
- CentOS Stream 9 64bit

二、MongoDb安装
添加MongoDB官方库
- 执行以下命令
sudo vim /etc/yum.repos.d/mongodb-org-4.4.repo
- 在文件中添加以下内容
[mongodb-org-4.4]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
- 如不熟悉vim编辑器操作,可手动在
/etc/yum.repos.d/目录下创建mongodb-org-4.4.repo文件,打开文件后,在文件内添加以上文件内容,保存
安装MongoDB
- 执行以下命令
sudo yum install mongodb-org -y
配置MongoDB
- 打开配置文件
sudo vim /etc/mongod.conf
- 以下为mongodb常见配置及说明
# mongod.conf# 所有配置项文档:
# http://docs.mongodb.org/manual/reference/configuration-options/# 配置与日志相关信息
# 是否追加方式写入日志,默认True
# 日志文件的路径
systemLog:destination: filelogAppend: truepath: /var/log/mongodb/mongod.log# 配置与存储相关信息
# 数据库文件位置
storage:dbPath: /var/lib/mongojournal:enabled: true
# engine:
# wiredTiger:# 配置与网络相关信息
# 默认127.0.0.1 只能通过本地连接
# 0.0.0.0 任意地址远程连接
net:port: 27017bindIp: 0.0.0.0# 配置流程管理相关信息
# 是否以守护进程方式运行,默认false
processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfo# 启用安全控制
# security:
# authorization: enabled
- 按需修改配置后,保存关闭
三、MongoDB常见操作
- 启动MongoDB
sudo systemctl start mongod
- 关闭MongoDB
sudo systemctl stop mongod
- 重启MongoDB
sudo systemctl restart mongod
- 查看当前MongoDB状态
sudo systemctl status mongod
- 将MongoDB设置为系统服务
sudo systemctl enable mongod
- 登录MongoDB
mongo
四、MongoDB用户管理
创建用户
- 切换到admin数据库:
use admin - 创建管理员
admin:
db.createUser({ user: "admin", pwd: "123456", roles: [{ role: "readWriteAnyDatabase", db: "admin" },{ role: "userAdminAnyDatabase", db: "admin" },{ role: "dbAdminAnyDatabase", db: "admin" }
]});
- 参数释义:* roles:数组形式,配置具体权限+ `role: "readWriteAnyDatabase"`表示有读写任意数据库的权限+ `db: "admin"`,表示:当前权限只对`admin`数据库生效
- `admin`数据库,是 MongoDB 的管理级的特殊数据库,是有特殊意义的。
- 所以`readWriteAnyDatabase`这个权限虽然设置给了`admin`数据库,但实际上,`admin`数据库里还拥有`readWriteAnyDatabase`这个权限的`admin`用户,所以,该用户对任意数据库都具有读写的功能,不只局限在`admin`数据库。
- **注意**:只有`admin`数据库,才有`readWriteAnyDatabase`权限,如果是自己创建的数据库,无法为用户设置`readWriteAnyDatabase`权限,会报错该数据库没有这个权限的用户。
- 创建超级管理员
root:
db.createUser({ user: "root", pwd: "123456", roles: [{ role: "root", db: "admin" }
]});
- `root`权限也只能放在`admin`数据库内才能生效
- `root`是最高权限,可以做任何事情
- 创建普通用户
zhangsan:
db.createUser({ user: "zhangsan", pwd: "123456", roles: [{ role: "readWrite", db: "school" },{ role: "userAdmin", db: "school" },{ role: "readWrite", db: "myBlog" },{ role: "userAdmin", db: "myBlog" }
]});
- MongoDB常用权限
read:允许读取指定数据库中数据的权限。readWrite:允许读、写指定数据库中数据的权限。dbAdmin:允许对指定数据库中执行管理函数的权限,如索引创建、删除,查看统计或访问 system.profile。userAdmin:允许对指定数据库执行用户管理的权限,比如创建、删除和修改用户。dbOwner:允许对指定数据库执行任何管理操作。该角色结合了readWrite 、 dbAdmin和userAdmin角色授予的权限。<font style="color:#E4495B;">readAnyDatabase</font>:只对admin数据库可用,授予用户对所有数据库的read权限。<font style="color:#E4495B;">readWriteAnyDatabase</font>:只对admin数据库可用,授予用户对所有数据库的readWrite权限。<font style="color:#E4495B;">userAdminAnyDatabase</font>:只对admin数据库可用,授予用户对所有数据库的userAdmin权限。<font style="color:#E4495B;">dbAdminAnyDatabase</font>:只对admin数据库可用,授予用户对所有数据库的dbAdmin权限。<font style="color:#AD1A2B;">root</font>:只对admin数据库可用。超级账号,超级权限。
修改密码
db.updateUser("用户名", {pwd: "新密码"})
删除用户
db.dropUser("用户名")
五、启用安全控制
- 修改
mongodb.conf配置文件:- 一般默认在
/etc目录
- 一般默认在
# 启用安全控制
security:authorization: enabled
- 重启 MongoDB 服务:
sudo systemctl restart mongod - 重新进入MongoDB sheel:
mongo - 选择要验证的数据库:
use admin- 保存了需要验证的用户信息的数据库
- 验证用户信息:
db.auth("用户名", "密码")- 返回值为
1,表示验证通过。验证失败有error提示
- 返回值为
六、备份与还原
1. 备份
- 语法:
mongodump --host 服务器地址 --port 端口 --db 要备份的数据库名 --out 备份文件存储目录
mongodump --host localhost --port 27017 --db my_DB_name --out C:\Users\Administrator\Desktop\mydb.dump
2. 恢复
- 语法:
mongorestore --host localhost:27017 -u用户名 -p密码 --authenticationDatabase=验证数据库 备份文件目录 --drop
mongorestore --host localhost:27017 -uroot -p123456 --authenticationDatabase=admin C:\Users\Administrator\Desktop\mydb.dump --drop
-
mongorestore参数详解:-h:--host=<hostname>:连接地址--port=<port>:端口号- 也可以:
--host hostname:port
- 也可以:
-u:--username=<username>:用户名-p:--password=<password>:密码--authenticationDatabase=<db-name>:验证数据库名--authenticationMechanism=<mechanism>:验证机制-d:--db=<db-name>:指定恢复的数据库,如果不指定-d,会从备份目录中获取数据库名-c:--collection<collection-name>:指定恢复的集合,如果不指定-c,会从备份目录中获取集合名--drop:导入集合前先删掉集合,不会删除不会备份中的集合--gzip:从压缩文件中进行恢复
七、外部工具连接MongoDB
- 可视化管理工具(此处以Navicat示例):

- NodeJs(以mongoose驱动为例):
{"name": "mongodb_test","version": "0.0.0",..."dependencies": {..."mongoose": "^8.4.0",...}...
}
const mongoose = require('mongoose');// 替换以下信息为你的数据库信息
const host = '数据库地址';
const database = 'dbName'; // 要连接的数据库
const port = 27017;const username = '用户名';
const password = '密码';
const authSource = 'admin'; // 通常使用 'admin' 数据库作为身份验证来源// 构建连接字符串,包含认证信息
const authMechanism = 'DEFAULT'; // 或者使用 'SCRAM-SHA-1', 'SCRAM-SHA-256', 'MONGODB-X509', 等const connectionString = `mongodb://${username}:${password}@${host}:${port}/${database}?authSource=${authSource}&authMechanism=${authMechanism}`;// 使用构建的连接字符串连接数据库
mongoose.connect(connectionString)
.then(() => console.log('数据库连接成功'))
.catch(err => console.error('数据库连接失败', err));module.exports = mongoose;
相关文章:
Linux环境下Mongodb部署
文章目录 一、系统环境二、MongoDb安装添加MongoDB官方库安装MongoDB配置MongoDB 三、MongoDB常见操作四、MongoDB用户管理创建用户修改密码删除用户 五、启用安全控制六、备份与还原1. 备份2. 恢复 七、外部工具连接MongoDB 一、系统环境 CentOS Stream 9 64bit 二、MongoD…...
(九)JavaWeb后端开发——Servlet
目录 1.Servlet由来 2.Servlet快速入门 3.Servlet执行原理 4.Servlet生命周期 1.Servlet由来 在JaveEE API文档中对Servlet的描述是:可以运行在服务器端的微小程序,但是实际上,Servlet就是一个接口,定义了Java类被浏览器访问…...
【零售和消费品&家居用品】家庭门窗开闭状态安全监控系统源码&数据集全套:改进yolo11-DCNV2
改进yolo11-GhostDynamicConv等200全套创新点大全:家庭门窗开闭状态安全监控系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”…...
【JavaScript】axios 二次封装拦截器(接口、实例、全局)
学习 coderwhy 老师结合 ts 二次封装 axios 目录结构 config config\index.ts // export const BASE_URL "http://codercba.com:9002"; export const TIME_OUT 10000;// 1. 根据环境变量区分接口地址 // let BASE_URL: string; // if (process.env.NODE_ENV &qu…...
Linux_02 Linux常用软件——vi、vim
vi编辑器有三种主要模式,每种模式的功能和用途不同: 一、命令模式 (Command Mode): - 启动 vi 时默认进入此模式。 - 你可以在此模式下移动光标,输入各种命令(如删除、复制、粘贴等)。 yy:…...
C++代码优化--要求或禁止在堆中产生对象
目录 1.引言 2.栈与堆区别 2.1. 栈(Stack) 2.2. 堆(Heap) 3.限制在堆上分配内存的好处 4.对象在栈上分配内存的方法 4.1. 使用RAII(资源获取即初始化) 4.2. 避免使用new和delete 4.3. 限制对象的生…...
MybatisPlus入门(六)MybatisPlus-空值处理
一、MybatisPlus-空值处理 1.1)问题引入: 在查询中遇到如下情况,有部分筛选条件没有值,如商品价格有最大值和最小值,商品价格部分时候没有值。 1.2)解决办法: 步骤一:新建查询实体…...
钉钉内集成第三方免密登录(Vue+.Net)
需要实现的效果就是在钉钉内点击应用能跳转到第三方网站并且免密登录 1.登录钉钉PC端管理后台 2.通过管理后台进去开发者后台 3.应用开发 创建H5微应用 4.应用创建成功后直接点权限管理全部授权 5.设置H5登录地址 6. 应用管理发布 至此需要配置的步骤全部已完成,…...
卷积神经网络实验三:模型优化(1)
作者有话说: 这篇文章写的还是比混乱的。因为本人也是第一次做这样的尝试,虽然接触深度学习有一年了,但是对于模型的优化仅仅是局限于理论上。通过这一次的实验,我对于模型的理解也更深了几分。我不期望这篇文章能帮你能解决多大问…...
STM32F103的CAN通讯接收测试
首先配置CUBEMX 1.打开CUBEMX 设置时钟,由于我没有外部时钟,所以我选择内部时钟,选择8倍频,1分频,APB1时钟频率为32MKHZ,也就是说每秒能够执行 3200 万个时钟周期,1M是每秒执行100万个时钟周期。 2.CAN收…...
【Rust中的智能指针】
Rust中的智能指针 什么是智能指针?什么是Rust中的智能指针?Rust中的智能指针BoxBox的使用场景 Rust中的智能指针Rc与Arcrust中的RefCellrefcell的缺点:rust中的weak先来看看C中的weak_ptr定义代码示例: Deref和Drop 总结 什么是智…...
基于深度学习的社交网络中的社区检测
在社交网络分析中,社区检测是一项核心任务,旨在将网络中的节点(用户)划分为具有高内部连接密度且相对独立的子群。基于深度学习的社区检测方法,通过捕获复杂的网络结构信息和节点特征,在传统方法基础上实现…...
【Python基础】
一、编程语言介绍 1、分类 机器语言 (直接用 0 1代码编写)汇编语言 (英文单词替代二进制指令)高级语言 2、总结 1、执行效率:机器语言>汇编语言>高级语言(编译型>解释型) 2、开发效率&…...
【玉米叶部病害识别】Python+深度学习+人工智能+图像识别+CNN卷积神经网络算法+TensorFlow
一、介绍 玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集(‘矮花叶病’, ‘健康’, ‘灰斑病一般’, ‘灰斑病严重’, ‘锈病一般’, ‘锈病严重’, ‘叶斑病一般’, ‘叶斑病严重’&#x…...
【设计模式】如何用C++实现依赖倒置
【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置? 依赖倒置原则(Dependency Inversion Principle,DIP)是SOLID面向对象设计原则中的一项。它的核心思想是: 高层模块不应该依赖于低层模块,两者都应该…...
使用onnxruntime-web 运行yolov8-nano推理
ONNX(Open Neural Network Exchange)模型具有以下两个特点促成了我们可以使用onnxruntime-web 直接在web端上运行推理模型,为了让这个推理更直观,我选择了试验下yolov8 识别预览图片: 1. 跨平台兼容性 ONNX 是一种开…...
Gin框架html/vue前端使用hls.js播放/点播m3u8(hls)格式视频
说明 在web应用开发时遇到在线播放m3u8格式视频,由于m3u8是多分片视频,原生video标签无法直接播放,所以需要js对m3u8处理才能播放,网上有很多插件,这里我选择最近简单方法hls.js播放,引入一个js文件即可。…...
HarmonyOS 私仓搭建
1. HarmonyOS 私仓搭建 私仓搭建文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-ohpm-repo-quickstart-V5 发布共享包[https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-har-publish-0000001597973129-V5]…...
Mybatis学习笔记(二)
八、多表联合查询 (一) 多表联合查询概述 在开发过程中单表查询不能满足项目需求分析功能,对于复杂业务来讲,关联的表有几张,甚至几十张并且表与表之间的关系相当复杂。为了能够实业复杂功能业务,就必须进行多表查询,…...
Google“Big Sleep“人工智能项目发现真实软件漏洞
据Google研究人员称,该公司的一个人工智能项目足够聪明,能够自行发现现实世界中的软件漏洞;Google的人工智能项目最近在开源数据库引擎 SQLite 中发现了一个之前未知的可利用漏洞。 该公司随后在正式软件发布之前报告了这一漏洞,这…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
中国政务数据安全建设细化及市场需求分析
(基于新《政务数据共享条例》及相关法规) 一、引言 近年来,中国政府高度重视数字政府建设和数据要素市场化配置改革。《政务数据共享条例》(以下简称“《共享条例》”)的发布,与《中华人民共和国数据安全法》(以下简称“《数据安全法》”)、《中华人民共和国个人信息…...
