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)、(…...
密码学基础:搞懂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 平台技术解析:从需求萌发到独立平台的演进之路
先回顾:三次握手(建立连接)核心流程(实际版) 为了让挥手流程衔接更顺畅,咱们先快速回顾三次握手的实际核心,避免上下文脱节: 第一步(客户端→服务器)…...
QMCDecode终极指南:如何一键破解QQ音乐加密格式实现音乐自由
QMCDecode终极指南:如何一键破解QQ音乐加密格式实现音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,…...
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 提出的字节码预编译增强机制&…...
