MongoDB系列之角色权限验证

一、基本原理

MongoDB中,每个数据库的实例都可拥有任意多个用户。安全检查开启后,只有通过身份验证的用户才能够进行数据的读写操作。

admin(管理员)和local(本地)是两个特殊的数据库,它们当中的用户可对任何数据库进行操作。这两个数据库中的用户可被看作是超级用户。经认证后,管理员用户可对任何数据库进行读写,同时能夠执行某些只有管理员才能执行的命令,如listDatabases和shutdown。

二、角色权限

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

三、admin库与root用户

mongosh localhost/admin -u root -p
// MongoDB 6.0以上使用mongosh,以下使用mongo命令

在这里插入图片描述
我这里用docker安装Mongodb时已经配置了admin库和和admin库下的root用户,如果安装时没有配置的话直接输入mongosh

mongosh
> use admin
switched to db admin
db.createUser({user:'root',pwd:'123456','roles':['root']})
// 用户root,密码为abcd

四、创建库与添加用户

db.createUser({user:'test_user',pwd:'123456','roles':['readWrite']})
// 读写角色权限

在这里插入图片描述

五、读写权限

db.createUser({user:'test_read',pwd:'123456','roles':['read']})
// 只读角色权限

在这里插入图片描述

db.auth('test_read','123456')
// 登录test_read用户

在这里插入图片描述

db.createCollection('student')
// 创建一个student集合,提示无权限

在这里插入图片描述

db.articles.insert({'author':'Peter','name':'Java'})
// 往一个已存在的集合中插入数据,提示无写权限

在这里插入图片描述

六、身份验证

切换到test库,没登录状态

show tables
// 提示需要先登录

在这里插入图片描述

进行登录身份验证后,执行成功

db.auth('test_user','123456')
// 登录test_user用户

在这里插入图片描述
在这里插入图片描述

往期推荐:
MongoDB系列之索引
MongoDB系列之聚合操作
MongoDB系列之详细查询
MongoDB系列之数量统计、排序、分页

如果你对我的创作感兴趣并且你能学到有用的技术,请点关注,点关注不迷路,你要是觉得文章写得可以的话,请点赞、分享加收藏,谢谢~

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新之助Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值