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 中发现了一个之前未知的可利用漏洞。 该公司随后在正式软件发布之前报告了这一漏洞,这…...
Wan2.2-I2V-A14B开源大模型:支持LoRA微调与私有领域视频风格迁移
Wan2.2-I2V-A14B开源大模型:支持LoRA微调与私有领域视频风格迁移 1. 模型概述与核心能力 Wan2.2-I2V-A14B是一款开源的文生视频大模型,专为高质量视频生成任务设计。该模型在保持开源特性的同时,通过LoRA微调技术实现了对私有领域视频风格的…...
GetQzonehistory:你的QQ空间回忆一键备份终极指南
GetQzonehistory:你的QQ空间回忆一键备份终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心那些记录青春岁月的QQ空间说说不小心丢失?从青涩的…...
【大语言模型基础(2)】自注意力与多头机制:QKV、缩放与因果掩码
文章目录摘要1. 为什么需要自注意力2. Q、K、V 到底是什么一个具体例子3. Attention 公式在干什么第一步:计算相似度第二步:做缩放第三步:softmax\mathrm{softmax}softmax 归一化第四步:对 ValueValueValue 做加权平均4. 为什么 G…...
Mastering nohup: Redirecting Output for Persistent Server Deployments
1. 为什么你需要掌握nohup命令 想象一下这个场景:你在远程服务器上启动了一个重要的Java服务,花了半小时调试终于跑起来了。这时候老板喊你开会,你顺手关闭了终端窗口。等会议结束回来一看——服务居然挂了!所有努力付诸东流&…...
别再只用Dice Loss了!结合Focal Loss解决钢材缺陷分割中的小目标难题(附PyTorch代码)
突破小目标分割瓶颈:Focal Loss与Dice Loss的黄金组合实践 在工业质检领域,钢材表面缺陷分割任务常面临两个核心挑战:毫米级点状缺陷的漏检与复杂纹理背景下的误报。传统Dice Loss虽能缓解类别不平衡问题,但当遇到像素占比不足0.1…...
Windows平台APK安装技术深度解析:APK-Installer架构设计与实践指南
Windows平台APK安装技术深度解析:APK-Installer架构设计与实践指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK-Installer是一款专为Windows平台设计…...
开源工具Umi-OCR:PDF处理与文字提取的高效解决方案
开源工具Umi-OCR:PDF处理与文字提取的高效解决方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHub_…...
nbiot-arduino库:Quectel BC95/BC68模组快速接入指南
1. 项目概述nbiot-arduino是一个面向嵌入式开发者的轻量级 Arduino 库,专为驱动 Quectel 公司推出的 NB-IoT(Narrowband IoT)通信模组而设计。该库并非通用 AT 指令封装器,而是聚焦于 NB-IoT 物联网场景下的典型交互范式——以低功…...
FOSUserBundle配置参考:所有参数详解与最佳配置方案
FOSUserBundle配置参考:所有参数详解与最佳配置方案 【免费下载链接】FOSUserBundle Provides user management for your Symfony project. Compatible with Doctrine ORM & ODM, and custom storages. 项目地址: https://gitcode.com/gh_mirrors/fo/FOSUserB…...
【C++11 右值引用超详解】从原理到实战:移动语义 /forward/emplace 彻底吃透
前言在 C98 时代,我们只知道 “左值” 和 “右值”,但随着程序复杂度提升,无谓的拷贝问题越来越突出 —— 函数返回对象、容器插入元素、临时对象销毁,大量拷贝操作严重拖慢程序性能。C11 为了解决这个痛点,引入了右值…...
