MongoDB创建只读用户并授权指定集合的查询权限

MongoDB创建只读用户并授权指定集合的查询权限

创建测试数据

use testdb
db.test_t.insertOne({id:1,name:'zhangsan'});
db.test_t.insertOne({id:2,name:'lisi'});
db.test_t1.insertOne({id:1,name:'zhangsan'});
db.test_t1.insertOne({id:2,name:'lisi'});
db.test_t2.insertOne({id:1,name:'zhangsan'});

创建一个自定义角色,只允许在 testdb 数据库的 test_t1test_t2 集合上执行查询操作。

use testdbdb.createRole({role: "read_testdb",  // 角色名称privileges: [{resource: { db: "testdb", collection: "test_t1" },  // 对testdb数据库下的test_t1集合授予权限actions: [ "find" ]  // 允许查询操作(find)},{resource: { db: "testdb", collection: "test_t2" },  // 对testdb数据库下的test_t2集合授予权限actions: [ "find" ]}],roles: []  // 没有继承其他角色
})

创建用户并分配角色

use testdbdb.createUser({user: "test_user",  // 用户名pwd: "test_user",  // 用户密码roles: [{ role: "read_testdb", db: "testdb" }  // 分配刚才创建的角色]
})

验证权限

[mongodb@mongo190 ~]$ mongosh -u test_user -p test_user 192.168.1.190:27017/testdb
Current Mongosh Log ID: 6736122884c4113b2f1bd68d
Connecting to:          mongodb://<credentials>@192.168.1.190:27017/testdb?directConnection=true&appName=mongosh+1.10.1
Using MongoDB:          6.0.6
Using Mongosh:          1.10.1For mongosh info see: https://docs.mongodb.com/mongodb-shell/Enterprise testdb> db.test_t1.find()
[{_id: ObjectId("67360308cd77db51ff44f83a"),id: 1,name: 'zhangsan'},{ _id: ObjectId("67360308cd77db51ff44f83b"), id: 2, name: 'lisi' }
]
Enterprise testdb> db.test_t2.find()
[{_id: ObjectId("67360371cd77db51ff44f83c"),id: 1,name: 'zhangsan'}
]
Enterprise testdb> db.test_t.find()
MongoServerError: not authorized on testdb to execute command { find: "test_t", filter: {}, lsid: { id: UUID("89d7523d-ce34-41f7-bb6e-d304e3ccf66a") }, $db: "testdb" }
Enterprise testdb> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端(2)——快速入门CSS

参考&#xff1a; 罗大富 CSS 参考手册 | 菜鸟教程 CSS 参考手册 1. CSS CSS全名是层叠样式表&#xff0c;中文名层叠样式表。用于定义网页样式和布局的样式表语言。 通过 CSS&#xff0c;你可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式&#xff0c;…

yolo标签自动标注(使用python和yolo方法)

yolo代码自动标注 1.引言1.初阶“自动标注”&#xff0c;给每个图像都生成一个固定的标注文件&#xff0c;进而在labglimg中对矩形框进行微调&#xff0c;减少标注的工作量2.高阶自动标注&#xff0c;利用我们训练好的&#xff08;但是没有特别精准的&#xff09;yolo文件先对每…

jmeter常用配置元件介绍总结之线程组

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之线程组 1.线程组(用户)1.1线程组1.1.setUp线程组和tearDown线程组1.2.Open Model Thread Group(开放模型线程组)1.3.bzm - Arrivals Thread Group(到达线程组)1.4.jpgc - Ultimate Thread Group(终极线程组)1.5.jpgc - St…

spring gateway 动态路由

##yml配置 spring:application:name: public-gateway # cloud: # gateway: # routes: # - id: mybatis-plus-test # 路由的唯一标识 # uri: http://192.168.3.188:9898 # 目标服务的地址 # predicates: # - Path/test/** # 匹配…

HTTP 1.0、HTTP 1.1 和 HTTP 2.0 区别

HTTP 1.0、HTTP 1.1 和 HTTP 2.0 是超文本传输协议&#xff08;HTTP&#xff09;不同版本的规范&#xff0c;各自进行了多项更新和改进&#xff1a; 1. HTTP/1.0 单一请求-响应&#xff1a;每次请求都需要建立一个新的 TCP 连接&#xff0c;完成后立即断开。无状态连接&#…

NVT新能德科技入职测评SHL题库更新:数字推理+演绎推理高分答案、真题解析

新能德的入职Verify测评主要考察应聘者的逻辑推理能力、数学能力、数据分析能力以及处理信息的能力。根据搜索结果&#xff0c;测评通常包含以下几个部分&#xff1a; 1. **语言理解**&#xff1a;这部分包括阅读理解、逻辑填空和语句排序。要求应聘者在17分钟内完成30题&#…

AndroidStudio 获取 Git 提交次数和编译时间

build.gradle文件 1.定义获取git提交次数的代码 def getGitCommitCount() {def process new ProcessBuilder(git,rev-list, --count, HEAD).directory(project.rootDir).redirectErrorStream(true).start()def output process.inputStream.text.trim()process.waitFor()ret…

学法减分交管12123模拟练习小程序源码前端和后端和搭建教程

交管推出个学法减分&#xff0c;每个驾驶员可以把被扣的6分&#xff0c;以看视频答题的形式学习回来&#xff0c;然后答题这个一共二十道题每道题60秒&#xff0c;有好多人不会&#xff0c;用咱们的小程序就可以模拟练习强化练习&#xff0c;还有拍照识别题目找到正确答案&…

系统上线后发现bug,如何回退版本?已经产生的新业务数据怎么办?

有小伙伴在问&#xff0c;系统上线后如果发现bug&#xff0c;如何回退程序&#xff1f;如果已经产生的新业务数据该怎么处理&#xff1f; 一、处理思路 首先需要判断这个bug的严重性和影响范围。 如果bug不严重影响系统的正常运行&#xff0c;可以选择在线修复。如果bug严重…

MinIO分片下载超大文件

一、前言 各位亲爱的们&#xff0c;之前介绍过了上传超大文件到MinIO&#xff1a; MinIO分片上传超大文件&#xff08;纯服务端&#xff09;MinIO分片上传超大文件&#xff08;非纯服务端&#xff09; 这里最后再补充一下从MinIO下载超大文件。 二、从MinIO分片下载大文件 …

element-plus <el-date-picker>日期选择器踩坑!!!!

我怎么一上午踩两个坑&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;大声bb&#xff09; 原来的vue2老项目是这样写的 <el-form-item label"时间" prop"time"><el-date-pickerv-model"addForm.time"typ…

JS的学习与使用

JS的学习与使用 一 什么是Javascript&#xff1f; Javascript是一门跨平台&#xff0c;面向对象的脚本语言&#xff0c;是用来控制网页行为的&#xff0c;它能使网页可以交互 java与Javascript是完全不同的语言&#xff0c;不论是概念还是设计&#xff0c;但是基础语法类似 E…

ubuntu20.04 解决Pytorch默认安装CPU版本的问题

ubuntu20.04 解决Pytorch默认安装CPU版本的问题 在使用Anaconda安装支持CUDA的PyTorch版本时&#xff0c;遇到只能安装CPU版本的PyTorch是一个常见问题。这通常由于Anaconda环境配置、镜像源设置不当或版本匹配问题导致。以下是详尽的解决方案和步骤&#xff0c;以确保能够正确…

【操作系统】守护进程

一、守护进程的概念 守护进程是一个在后台运行并且不受任何终端控制的进程 二、自己实现守护进程 1.预备知识 &#xff08;1&#xff09;/dev/null /dev/null是一个特殊的设备文件&#xff0c;往这个文件里写不进去任何数据&#xff0c;也读不出来任何数据 因此&#xff0…

【数据结构与算法】第12课—数据结构之归并排序

文章目录 1. 归并排序2. 计数排序3. 排序算法复杂度及稳定性分析在这里插入图片描述 1. 归并排序 分治法&#xff08;Divide and Conquer&#xff09;是一种重要的算法设计策略&#xff0c;其核心思想是将一个复杂的大问题分解为若干个小规模的子问题&#xff0c;递归地解决这些…

【安全通信】告别信息泄露:搭建你的开源视频聊天系统briefing

文章目录 前言1.关于briefing2.本地部署briefing3.使用briefing4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定briefing公网地址 前言 在这个信息爆炸的时代&#xff0c;视频聊天几乎成了我们日常沟通的标配。但你是否曾在视频会议中感到不安&#xff0c;担心自己的私…

RTOS基础-信号量和队列

引言 消息队列用于传输多个数据&#xff0c;但是有时候我们只需要传递状态&#xff0c;这个状态值需要用一个数值表示&#xff0c;使用信号量效率更高、更节省内存 信号&#xff1a;起通知作用 量&#xff1a;还可以用来表示资源的数量 当"量"没有限制时&#x…

pip install tkinter报错

pip install tkinter&#xff1a;ERROR: Could not find a version that satisfies the requirement tkinter 这是因为&#xff0c;安装python的时候没有安装tkinter选项&#xff0c;解决这个问题有下面两种方法 一、重新安装python 但是这个步骤有点麻烦 二、在python-3.1…

Java 实现自定义 LRU 缓存

一、引言 在现代软件系统中&#xff0c;缓存是提高性能的重要手段之一。LRU 缓存作为一种常用的缓存策略&#xff0c;能够根据数据的使用频率自动淘汰最近最少使用的数据&#xff0c;从而保持缓存的高效性。在 Java 中&#xff0c;虽然有一些现成的缓存框架可供使用&#xff0c…

Python的面向对象day7

1、什么是面向对象 面向对象称为OO&#xff0c;他通过将数据和功能封装在一个被称为‘对象’的实体中&#xff0c;来组织和管理代码。面向对象变成&#xff08;OOP&#xff09;具有四个特性&#xff0c;封装、继承、多态、抽象 优点&#xff1a;模块化、安全性高、代码重用性…