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

Mongodb权限

MongoDB 的权限管理用于确保数据库的安全性并限制用户访问敏感数据。MongoDB 使用基于角色的访问控制(RBAC)来管理权限,允许管理员定义用户和角色,并为这些角色分配相应的权限。

Mongodb的内置角色

数据库角色

角色说明权限
read允许用户读取指定数据库的所有集合。包括 find 操作。find (对于所有集合)
readWrite允许用户在指定数据库上进行读取和写入操作。包括增删查改操作。find, insert, update, delete (对于所有集合)
dbAdmin允许用户管理数据库的结构,例如创建和删除集合、创建索引等。适用于数据库管理任务。createCollection, dropCollection, createIndex, dropIndex, collStats, dbStats, listCollections, listIndexes
userAdmin允许用户创建和删除数据库用户及角色,修改用户的角色和权限。createUser, dropUser, grantRolesToUser, revokeRolesFromUser, changePassword
dbOwner组合了 readWrite, dbAdmin, 和 userAdmin 的权限。允许用户在数据库上执行几乎所有操作,包括用户和角色管理。find, insert, update, remove, createCollection, dropCollection, createIndex, dropIndex, collStats, dbStats, listCollections, listIndexes, createUser, dropUser, grantRolesToUser, revokeRolesFromUser, changePassword

集群角色

角色说明权限
clusterAdmin允许用户执行集群级别的管理操作,例如查看集群状态、管理副本集和分片等。addShard, removeShard, enableSharding, shardCollection, splitChunk, moveChunk, balancerCollection, serverStatus, replSetGetStatus, listShards, listDatabases
clusterManager允许用户执行集群管理任务,但没有 clusterAdmin 角色的全部权限。serverStatus, replSetGetStatus, listShards, listDatabases
clusterMonitor允许用户查看集群的统计信息,例如服务器状态和副本集状态,但不允许修改集群配置。serverStatus, replSetGetStatus, listShards

特权角色

角色说明权限
backup允许用户执行备份操作,通常涉及读取数据库的所有数据。find (对于所有集合)
restore允许用户进行恢复操作,通常涉及写入数据。insert, update, remove (对于所有集合)

应用角色

角色说明权限
readAnyDatabase允许用户读取任意数据库的所有集合。包括 find 操作。find (对于所有集合)
readWriteAnyDatabase允许用户在任意数据库上进行读取和写入操作。包括 find, insert, update, remove 操作。find, insert, update, delete (对于所有集合)
dbAdminAnyDatabase允许用户管理任意数据库的结构。createCollection, dropCollection, createIndex, dropIndex, collStats, dbStats, listCollections, listIndexes
userAdminAnyDatabase允许用户在任意数据库中管理用户和角色。createUser, dropUser, grantRolesToUser, revokeRolesFromUser, changePassword
root最高权限角色,具有对所有数据库和集群操作的完全控制权。包括所有内置角色的权限。所有权限

创建自定义角色

操作权限,需要在 admin 库中进行,使用 use admin,进入admin库

创建自定义角色

db.createRole({role: "角色名称myRole",privileges: [{resource: { db: "库名称myDatabase", collection: "" },actions: [ "find" ]}],roles: []
})

参数说明:

  • role: 自定义角色的名称。
  • privileges: 一个数组,定义角色的权限。每个权限定义了可以在某个资源上执行哪些操作。
    • resource: 权限适用的资源,db 是数据库名称,collection 可以指定集合(空字符串表示所有集合)。
    • actions: 角色允许的操作,例如 find, insert, update, remove 等。
  • roles: 角色继承的其他角色,通常为空数组(表示不继承任何其他角色)。

查看自定义的角色

db.getRole("角色名称myRole")

修改自定义角色

db.updateRole("角色名称myRole", {privileges: [{resource: { db: "库名称myDatabase", collection: "" },actions: [ "find", "listIndexes" ]}]
})

删除自定义角色

db.dropRole("角色名称myRole")

创建用户

创建用户

在 MongoDB 中,用户是基于数据库创建的。如果你希望用户仅在某个特定数据库上具有权限,需要在该数据库上创建用户。如果需要超管权限就在admin库中创建。

use myDatabase  # 切换到指定的库,创建的用户只在当前库有权限db.createUser({user: "用户名",pwd: "密码",roles: ["readWrite", "dbAdmin"]        // 角色列表
})
use admin db.createUser({user: "用户名",pwd: "密码",roles: [{"role" : "readWrite","db" : "库名称myDatabase"        // 创建用户时,指定用户的库},{"role" : "dbAdmin",                // 指定第二个角色"db" : "库名称myDatabase"        }]
})
#  创建一个拥有所有权限的超管用户
use admindb.createUser({user: "admin",pwd: "123456",roles: ["root"]
})

查看用户

# 查看指定的用户
db.getUser("用户名")# 查看所有用户
show users

修改用户密码

db.updateUser("用户名", {pwd: "新密码"
})

修改用户角色

db.updateUser("用户名", {roles: ["readWrite", "dbAdmin"]
})

删除用户

db.dropUser("用户名")

相关文章:

Mongodb权限

MongoDB 的权限管理用于确保数据库的安全性并限制用户访问敏感数据。MongoDB 使用基于角色的访问控制(RBAC)来管理权限,允许管理员定义用户和角色,并为这些角色分配相应的权限。 Mongodb的内置角色 数据库角色 角色说明权限read…...

力扣第五十三题——最大子数组和

内容介绍 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…...

达梦数据库:select报错:不是 GROUP BY 表达式

目录 SQL示例报错信息原因排查解决方法一:达梦支持灵活的处理方式,可以直接在查询中加hint参数方法二:修改dm.ini参数GROUP_OPT_FLAG1,动态,会话级参数,不用重启数据库方法三:配置兼容参数&…...

大模型卷向「下半场」,产业场景成拼杀重地

在19世纪的一个雨声潺潺的夏日,诗人拜伦与雪莱在瑞士的湖畔边闲聊,他们聊到了一个大胆的想法:如果能够把一个生物的各个部分制造出来,再组装到一起,赋予它生命的温暖,那会怎样? 这次对话激发了…...

OD C卷 - 多线段数据压缩

多段 线 数据压缩 (200) 如图中每个方格为一个像素(i,j),线的走向只能水平、垂直、倾斜45度;图中线段表示为(2, 8)、(3,7)、(3, 6)、&#xff08…...

密码学基础:搞懂Hash函数SHA1、SHA-2、SHA3(2)

目录 1.引入 2. SHA512-224\256 3.SHA-3 4.MD5 5.SM3 1.引入 上篇密码学基础:搞懂Hash函数SHA1、SHA-2、SHA3(1)-CSDN博客,我们先就将基础的SHA1\2讲解了,接下来我们继续聊SHA-3、SHA2变体SHA512_224\256等 2. SHA512-224\256 SHA512…...

C++ 异步编程:std::async、std::future、std::packaged_task 和 std::promise

C 异步编程:std::async、std::future、std::packaged_task 和 std::promise 在现代 C 编程中,异步编程已经成为一种常见的模式。利用 C11 引入的标准库组件 std::async、std::future、std::packaged_task 和 std::promise,我们可以更方便地处…...

OD C卷 - 石头剪刀布游戏

石头剪刀布游戏 (100) 剪刀石头布游戏,A-石头、B-剪刀、C-布游戏规则: 胜负规则,A>B; B>C; C>A;当本场次中有且仅有一种出拳形状优于其他出拳形状,则该形状的玩家是胜利者,否则认为是…...

关于k8s集群中kubectl的陈述式资源管理

1、k8s集群资源管理方式分类 (1)陈述式资源管理方式:增删查比较方便,但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 (2)声明式资源管理方式:yaml文件管理 使用yam…...

XML 学习笔记

简介: (1)XML:可扩展性标记语言,用于传输和存储数据,而不是展示数据,是W3C 推举的数据传输格式。 XML的标签必须自定义,但是在写标签名的时候一定要有含义。 XML 只能有一个根节点…...

MongoDB未授权访问漏洞

2.MongoDB未授权访问漏洞 mongodb数据库是由C编写,主要是为了提供web应可用扩展的一种高性能数据库。开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库…...

数据安全、信息安全、网络安全区别与联系

关键字: 信息安全 数据安全 网络安全 [导读] 让人更好理解 “数据安全”、“信息安全”、“网络安全” 三者间的区别与联系了,我们汇总了官方机构给这三者的定义,并且网友也给出了自己的看法,一起来看看。 在 “互联网 ” 被广…...

Jenkins未授权访问漏洞 *

漏洞复现 步骤一:使用以下fofa语法进行产品搜索.... port"8080" && app"JENKINS" && title"Dashboard [Jenkins]" 步骤二:在打开的URL中...点击Manage Jenkins --> Scritp Console在执行以下命令..…...

【爬虫原理】

《爬虫》 1、爬虫的概念 ​ 概念:(spider,网络蜘蛛)通过互联网上一个个的网络节点,进行数据的提取、整合以及存储 分类: 通用爬虫(了解) ​ 主要用于搜索引擎(百度、…...

计算机组成原理 —— 指令流水线的基本概念

计算机组成原理 —— 指令流水线的基本概念 串行执行(Serial Execution)串行执行的特点串行执行的局限性串行执行的应用场景 并行执行定义基本原理五段式指令流水线优点缺点 流水线的性能指标示例计算 我们来了解一下指令流水线: 首先在这之…...

Python爬虫技术 第31节 持续集成和自动化部署

持续集成和自动化部署 Git版本控制 Git 是一个非常流行的分布式版本控制系统,用于跟踪对项目文件的修改。对于爬虫项目来说,使用Git可以帮助你管理代码的不同版本,协同开发,并且可以在出现问题时回滚到之前的版本。 基本操作&a…...

数据结构(C语言版)(第2版)课后习题答案

数据结构(C语言版)(第2版)课后习题答案 李冬梅 2015.3 目 录 第 1 章 绪论 1 第 2 章 线性表 5 第 3 章 栈和队列 13 第 4 章 串、数组和广义表 26 第 5 章 树和二叉树 33 第 6 章 图 43 第 7 章 查找 54 第 8 章 排序 65…...

打开轮盘锁问题(LeetCode)的分析总结及进一步提问

打开轮盘锁问题分析总结,及进一步提问:请给出一组最小步数下的号码序列组合 题目描述 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由…...

python——joblib进行缓存记忆化-对计算结果缓存

问题场景 在前端多选框需要选取多个数据进行后端计算。 传入后端是多个数据包的对应路径。 这些数据包需要按一定顺序运行,通过一个Bag(path).get_start_time() 可以获得一个float时间值进行排序,但由于数据包的特性,这一操作很占用性能和时…...

Linux文件管理

系列文章目录 提示:仅用于个人学习,进行查漏补缺。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1…...

谷歌Gemini API 应用(二):多模态与安全实践

1. 多模态处理实战:当Gemini遇上图像与文本 第一次用Gemini Pro Vision分析自家猫咪照片时,我被它的理解能力惊到了——不仅能准确识别出"橘猫在抓沙发",还能推断出"猫咪可能处于换牙期需要磨牙玩具"。这种图文结合的智能…...

牛客网1000 大厂Java 面试题大全(2026 最新版)

很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。 问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。 应届生:你该如何准备简历&#…...

StructBERT情感分类模型在教育领域的情绪分析应用

StructBERT情感分类模型在教育领域的情绪分析应用 教育工作者如何从海量学生反馈中快速识别情绪变化?AI情感分析技术正在重新定义教学体验优化方式 1. 教育场景中的情感分析需求 在日常教学过程中,学生通过各种渠道表达他们的感受和体验:课程…...

Hypermesh2021实战:塑料圆盘结构化网格划分全流程(附避坑指南)

Hypermesh2021实战:塑料圆盘结构化网格划分全流程(附避坑指南) 在CAE仿真分析领域,网格划分质量直接影响计算结果的精度和效率。对于薄壳类塑料零件,采用结构化网格不仅能提升计算收敛性,还能显著减少单元数…...

OpenClaw+Phi-3-vision-128k-instruct医疗辅助:医学影像报告自动生成系统

OpenClawPhi-3-vision-128k-instruct医疗辅助:医学影像报告自动生成系统 1. 医疗AI落地的隐私合规挑战 去年参与某三甲医院科研项目时,我深刻体会到医疗AI落地的核心矛盾——技术潜力与隐私合规的冲突。当时我们需要处理数千份CT影像,传统人…...

HagiCode Soul 平台技术解析:从需求萌发到独立平台的演进之路

先回顾:三次握手(建立连接)核心流程(实际版) 为了让挥手流程衔接更顺畅,咱们先快速回顾三次握手的实际核心,避免上下文脱节: 第一步(客户端→服务器)&#xf…...

QMCDecode终极指南:如何一键破解QQ音乐加密格式实现音乐自由

QMCDecode终极指南:如何一键破解QQ音乐加密格式实现音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#xff0c…...

XXL-SSO与Active Directory集成:企业级身份管理终极方案

XXL-SSO与Active Directory集成:企业级身份管理终极方案 XXL-SSO是一款分布式单点登录框架,能够帮助企业实现多系统统一身份认证与授权。本文将详细介绍如何将XXL-SSO与Active Directory集成,打造企业级身份管理解决方案,让用户认…...

收藏!小白也能入局:2026年最火高薪AI Agent开发指南(年薪80万+)

文章介绍了Agentic AI(AI Agent)的兴起及其对职场的巨大影响。通过一个真实案例展现了个人通过学习AI从月薪8K到年薪80万的转变。文章指出,到2026年,40%的岗位将与AI Agent协作,年薪10万美元起步的职位需求激增。文章详…...

CPython AOT编译器模块全图谱,从_pycompile.c到aot_codegen.cc的17个关键函数逐行注释与性能拐点分析

第一章:CPython AOT编译器模块全图谱概览与演进脉络CPython 的 Ahead-of-Time(AOT)编译能力并非原生内建,而是近年来通过社区驱动的实验性项目逐步构建起模块化支撑体系。其核心演进路径始于 PEP 698 提出的字节码预编译增强机制&…...