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

Linux环境下Mongodb部署

文章目录

  • 一、系统环境
  • 二、MongoDb安装
      • 添加MongoDB官方库
      • 安装MongoDB
      • 配置MongoDB
  • 三、MongoDB常见操作
  • 四、MongoDB用户管理
      • 创建用户
      • 修改密码
      • 删除用户
  • 五、启用安全控制
  • 六、备份与还原
      • 1. 备份
      • 2. 恢复
  • 七、外部工具连接MongoDB

在这里插入图片描述

一、系统环境

  • CentOS Stream 9 64bit
    在这里插入图片描述

二、MongoDb安装

添加MongoDB官方库

  1. 执行以下命令
sudo vim /etc/yum.repos.d/mongodb-org-4.4.repo
  1. 在文件中添加以下内容
[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
  1. 如不熟悉vim编辑器操作,可手动在/etc/yum.repos.d/目录下创建mongodb-org-4.4.repo文件,打开文件后,在文件内添加以上文件内容,保存

安装MongoDB

  • 执行以下命令
sudo yum install mongodb-org -y

配置MongoDB

  1. 打开配置文件
sudo vim /etc/mongod.conf
  1. 以下为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
  1. 按需修改配置后,保存关闭

三、MongoDB常见操作

  1. 启动MongoDB
sudo systemctl start mongod
  1. 关闭MongoDB
sudo systemctl stop mongod
  1. 重启MongoDB
sudo systemctl restart mongod
  1. 查看当前MongoDB状态
sudo systemctl status mongod
  1. 将MongoDB设置为系统服务
sudo systemctl enable mongod
  1. 登录MongoDB
mongo

四、MongoDB用户管理

创建用户

  1. 切换到admin数据库:use admin
  2. 创建管理员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`权限,会报错该数据库没有这个权限的用户。
  1. 创建超级管理员root
db.createUser({ user: "root", pwd: "123456", roles: [{ role: "root", db: "admin" }
]});
- `root`权限也只能放在`admin`数据库内才能生效
- `root`是最高权限,可以做任何事情
  1. 创建普通用户zhangsan
db.createUser({ user: "zhangsan", pwd: "123456", roles: [{ role: "readWrite", db: "school" },{ role: "userAdmin", db: "school" },{ role: "readWrite", db: "myBlog" },{ role: "userAdmin", db: "myBlog" }
]});
  1. 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("用户名")

五、启用安全控制

  1. 修改mongodb.conf配置文件:
    • 一般默认在/etc目录
# 启用安全控制
security:authorization: enabled
  1. 重启 MongoDB 服务:sudo systemctl restart mongod
  2. 重新进入MongoDB sheel:mongo
  3. 选择要验证的数据库:use admin
    • 保存了需要验证的用户信息的数据库
  4. 验证用户信息: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

  1. 可视化管理工具(此处以Navicat示例):

  1. 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的描述是&#xff1a;可以运行在服务器端的微小程序&#xff0c;但是实际上&#xff0c;Servlet就是一个接口&#xff0c;定义了Java类被浏览器访问…...

【零售和消费品&家居用品】家庭门窗开闭状态安全监控系统源码&数据集全套:改进yolo11-DCNV2

改进yolo11-GhostDynamicConv等200全套创新点大全&#xff1a;家庭门窗开闭状态安全监控系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“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编辑器有三种主要模式&#xff0c;每种模式的功能和用途不同&#xff1a; 一、命令模式 (Command Mode)&#xff1a; - 启动 vi 时默认进入此模式。 - 你可以在此模式下移动光标&#xff0c;输入各种命令&#xff08;如删除、复制、粘贴等&#xff09;。 yy&#xff1a;…...

C++代码优化--要求或禁止在堆中产生对象

目录 1.引言 2.栈与堆区别 2.1. 栈&#xff08;Stack&#xff09; 2.2. 堆&#xff08;Heap&#xff09; 3.限制在堆上分配内存的好处 4.对象在栈上分配内存的方法 4.1. 使用RAII&#xff08;资源获取即初始化&#xff09; 4.2. 避免使用new和delete 4.3. 限制对象的生…...

MybatisPlus入门(六)MybatisPlus-空值处理

一、MybatisPlus-空值处理 1.1&#xff09;问题引入&#xff1a; 在查询中遇到如下情况&#xff0c;有部分筛选条件没有值&#xff0c;如商品价格有最大值和最小值&#xff0c;商品价格部分时候没有值。 1.2&#xff09;解决办法&#xff1a; 步骤一&#xff1a;新建查询实体…...

钉钉内集成第三方免密登录(Vue+.Net)

需要实现的效果就是在钉钉内点击应用能跳转到第三方网站并且免密登录 1.登录钉钉PC端管理后台 2.通过管理后台进去开发者后台 3.应用开发 创建H5微应用 4.应用创建成功后直接点权限管理全部授权 5.设置H5登录地址 6. 应用管理发布 至此需要配置的步骤全部已完成&#xff0c;…...

卷积神经网络实验三:模型优化(1)

作者有话说&#xff1a; 这篇文章写的还是比混乱的。因为本人也是第一次做这样的尝试&#xff0c;虽然接触深度学习有一年了&#xff0c;但是对于模型的优化仅仅是局限于理论上。通过这一次的实验&#xff0c;我对于模型的理解也更深了几分。我不期望这篇文章能帮你能解决多大问…...

STM32F103的CAN通讯接收测试

首先配置CUBEMX 1.打开CUBEMX 设置时钟&#xff0c;由于我没有外部时钟&#xff0c;所以我选择内部时钟&#xff0c;选择8倍频&#xff0c;1分频&#xff0c;APB1时钟频率为32MKHZ,也就是说每秒能够执行 3200 万个时钟周期&#xff0c;1M是每秒执行100万个时钟周期。 2.CAN收…...

【Rust中的智能指针】

Rust中的智能指针 什么是智能指针&#xff1f;什么是Rust中的智能指针&#xff1f;Rust中的智能指针BoxBox的使用场景 Rust中的智能指针Rc与Arcrust中的RefCellrefcell的缺点&#xff1a;rust中的weak先来看看C中的weak_ptr定义代码示例&#xff1a; Deref和Drop 总结 什么是智…...

基于深度学习的社交网络中的社区检测

在社交网络分析中&#xff0c;社区检测是一项核心任务&#xff0c;旨在将网络中的节点&#xff08;用户&#xff09;划分为具有高内部连接密度且相对独立的子群。基于深度学习的社区检测方法&#xff0c;通过捕获复杂的网络结构信息和节点特征&#xff0c;在传统方法基础上实现…...

【Python基础】

一、编程语言介绍 1、分类 机器语言 (直接用 0 1代码编写&#xff09;汇编语言 &#xff08;英文单词替代二进制指令&#xff09;高级语言 2、总结 1、执行效率&#xff1a;机器语言&#xff1e;汇编语言>高级语言&#xff08;编译型>解释型&#xff09; 2、开发效率&…...

【玉米叶部病害识别】Python+深度学习+人工智能+图像识别+CNN卷积神经网络算法+TensorFlow

一、介绍 玉米病害识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了8种常见的玉米叶部病害图片数据集&#xff08;‘矮花叶病’, ‘健康’, ‘灰斑病一般’, ‘灰斑病严重’, ‘锈病一般’, ‘锈病严重’, ‘叶斑病一般’, ‘叶斑病严重’&#x…...

【设计模式】如何用C++实现依赖倒置

【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置&#xff1f; 依赖倒置原则&#xff08;Dependency Inversion Principle&#xff0c;DIP&#xff09;是SOLID面向对象设计原则中的一项。它的核心思想是&#xff1a; 高层模块不应该依赖于低层模块&#xff0c;两者都应该…...

使用onnxruntime-web 运行yolov8-nano推理

ONNX&#xff08;Open Neural Network Exchange&#xff09;模型具有以下两个特点促成了我们可以使用onnxruntime-web 直接在web端上运行推理模型&#xff0c;为了让这个推理更直观&#xff0c;我选择了试验下yolov8 识别预览图片&#xff1a; 1. 跨平台兼容性 ONNX 是一种开…...

Gin框架html/vue前端使用hls.js播放/点播m3u8(hls)格式视频

说明 在web应用开发时遇到在线播放m3u8格式视频&#xff0c;由于m3u8是多分片视频&#xff0c;原生video标签无法直接播放&#xff0c;所以需要js对m3u8处理才能播放&#xff0c;网上有很多插件&#xff0c;这里我选择最近简单方法hls.js播放&#xff0c;引入一个js文件即可。…...

HarmonyOS 私仓搭建

1. HarmonyOS 私仓搭建 私仓搭建文档&#xff1a;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学习笔记(二)

八、多表联合查询 (一) 多表联合查询概述 在开发过程中单表查询不能满足项目需求分析功能&#xff0c;对于复杂业务来讲&#xff0c;关联的表有几张&#xff0c;甚至几十张并且表与表之间的关系相当复杂。为了能够实业复杂功能业务&#xff0c;就必须进行多表查询&#xff0c…...

Google“Big Sleep“人工智能项目发现真实软件漏洞

据Google研究人员称&#xff0c;该公司的一个人工智能项目足够聪明&#xff0c;能够自行发现现实世界中的软件漏洞&#xff1b;Google的人工智能项目最近在开源数据库引擎 SQLite 中发现了一个之前未知的可利用漏洞。 该公司随后在正式软件发布之前报告了这一漏洞&#xff0c;这…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...