MongoDB用户管理授权
创始人
2025-05-30 21:04:18

文章目录

  • 1 角色类型
  • 2 注意事项
  • 3 给单个数据库授权
  • 4 给一个用户授权多个数据库
  • 5 其它命令

1 角色类型

  1. 数据库用户角色:read、readWrite
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 备份恢复角色:backup、restore
  5. 所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
    dbAdminAnyDatabase
  6. 超级用户角色:root

2 注意事项

授权常见的模式分两种

  • 指定单个数据库给用户授权,此时需要先切换到指定数据库名称空间下,以test为例,use test,然后进行相关的授权grantRolesToUser。新创建用户时,以rsq用户为例,需要在test数据库中进行用户的创建,注意rsq跟其它数据库的用户不通用,如果需要在test2数据库中给rsq用户授权,则需要在test2中也创建rsq用户。此时mongo连接串需要指定相对应的数据库才可以登录,否则会报认证失败。
  • 指定多个数据库给一个用户授权,这种情况需要切换到admin数据库中,先对用户进行admin数据库的权限授权,如dbAdmin,授权完再给普通数据库授权,这种情况不需要再进入到普通数据库创建用户,用户是全局生效的。此时mongo连接串不需要指定具体的数据库名称也可以登录

3 给单个数据库授权

连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false&authSource=test1

# 新建数据库
use test1# 新建一个测试collection
# 默认一个db中没有collection,show dbs是看不到这个数据库的
db.site.insert({"name":"test1"})# 查看数据库
show dbs# 给新数据库创建用户,密码跟之前保持一致
db.createUser({user: "test",pwd: "xxxxx",roles: [ { role: "dbOwner", db: "test1" } ]})# 如果需要角色授权,则有如下命令
db.runCommand({grantRolesToUser: "test",roles:[{ role: "dbAdminAnyDatabase", db: "admin" }]}
)

4 给一个用户授权多个数据库

连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false

# 需要进入到admin数据库授权多个数据库给同一个用户
use admin# 创建用户
db.createUser({user: "test",pwd: "xxxxx",roles: [{ role: "dbAdmin", db: "admin" },{ role: "dbOwner", db: "test1" },{ role: "dbOwner", db: "test2" },{ role: "dbOwner", db: "test3" }]
})

5 其它命令

# 查看db相关权限
db.runCommand({rolesInfo: { role: "readWrite", db: "" },showPrivileges: true}
)# 查询用户
db.getUsers();
show users# 删除用户
db.dropUser('admin')# 修改用户密码
db.updateUser('admin', {pwd: '111111'})# 创建管理员用户,需要使用admin数据库
use admin  
db.createUser({user: "test",pwd: "xxxxx",roles: [ { role: "dbAdmin", db: "test" } ]})# 回收用户角色
db.revokeRolesFromUser("test",[{ role: "root", db: "admin" }]
)# 删除数据库
use percepai-cowa3d-corolla-v56tion
db.dropDatabase()

相关内容

热门资讯

【前端八股文】JavaScri... 文章目录Set概念与arr的比较属性和方法并集、交集、差集Map概念属性和方法String用索引值和...
海康硬盘录像机接入RTSP/o... EasyNVR安防视频云服务平台可支持设备通过RTSP/Onvif协议接入平台,能提供...
在混合劳动力时代如何避免网络安... 在混合劳动力时代如何避免安全网络风险 三年多来,混合工作一直是工作生活中不可或缺的一...
2023还不懂Jmeter接口... 这里介绍的Jmeter接口测试的的实战,如果文章内容没遇看懂的话,我这边...
基于4G/5G弱网聚合的多链路... 基于4G/5G多卡聚合(弱网聚合)的智能融合通信设备技术亮点 增强带宽提供可靠连接 通过将多个有线和...
如何使用Synplify综合v... 文章目录使用Synplify综合的好处synplify的教程方法1(无效)...
2023年全国最新高校辅导员精... 百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等ÿ...
2022年18个值得期待的Le... 有数百个独特的LearnDash附加组件,您可能很难选择您的LearnDash LMS...
【java基础】Stream流... 文章目录基本介绍流的创建流的各种常见操作forEach方法filter方法map方法peek方法fl...
javaweb高校行政办公自动... 本课题基于我国高校管理信息化建设现状,结合在实际工作中所遇到的问题和收获,...
一款专门为自动化测试打造的集成... 你好,我是不二。 随着行业内卷越来越严重,自动化测试已成为测试工程师的...
【go-zero】golang... 一、casbin 概览 1、casbin基本了解 casbin的GitHub:https://git...
现在开发低代码平台算晚吗? 现在开发低代码平台算晚吗?作为低代码的亲戚——零代码厂商,这篇就以“厂商...
【JavaWeb】书城项目(2... 222.书城项目-第三阶段:修改所有html页面为jsp页面 改成jsp页面之后&#x...
基于jeecgboot的大屏设...      通过前面设计好数据源后,就要进行数据集的设计了。      一、还是在onl...
Linux命令小技巧:显示文件... 工作中会有很多千奇百怪的需求,比如:如何在 Linux 命令行中快速找到...
【找工作】-- 大数据工程师找... 目录 1.前言 2.找工作的理论知识 2.1 分析个人特征 2.1.1 你自身优势是什么?
C++基础算法④——排序算法(... 排序算法 1.插入排序 2.桶排序 1.插入排序 基本思想:将初始数据分为有序部分和...
nginx快速入门.跟学B站n... nginx快速入门.跟学B站nginx一小时精讲课程笔记nginx简介及环境准备nginx简介环境准...
ORACLE存过互相调用之间事... 今天在问答区看到一个问题是 假如有procedureA、procedureB和procedureC&...
基于java中Springbo... 基于java中Springboot框影视影院订票选座管理系统 开发语言:Java 框...
CVE-2018-18086 最近闲来无事,看到青少年CTF平台,感觉对新手还是比较友好的࿰...
【深度学习】基于Hough变化... 💥💥💞💞欢迎来到本博客❤️❤️&#x...
AtCoder Beginne... D - Bank (atcoder.jp)         (1)题目大...
VxWorkds 内存管理(3... 虚拟内存管理 对于带MMU的目标板,VxWorks提供虚拟内存的支持,V...
【微服务】—— 统一网关Gat... 文章目录1. 概述1.1 为什么需要网关1.2 SpringCloud Gateway2. gate...
文心一言实际测试——让我们拿实... 文心一言实际测试——让我们拿实际说好坏 4月16日,文心一言闪亮登场,就...
Postgresql源码(10... 0 总结 (可以最后看) PLpgSQL_execstate中包含的两个...
网络技术与应用概论(上)——“... 各位CSDN的uu们你们好呀,今天,小雅兰的内容依旧是计算机网络的一些知...
Yolov5 QAT量化训练 1. QAT介绍 从 模型量化(5): 敏感层分析可以看出来,对于yolov5-nano模型,对最后...