MongoDB实验——MongoDB配置用户的访问控制

MongoDB 配置用户的访问控制

一、 实验原理

理解admin数据库:安装MongoDB时,会自动创建admin数据库,这是一个特殊数据库,提供了普通数据库没有的功能,例如,有些账户角色赋予用户操作多个数据库的权限,而这些角色只能在admin数据库中创建。检查凭证时,MongoDB将在指定数据库和admin数据库中检查用户账户。

创建用户账户

数据库管理的一个重要部分是创建能够管理用户和数据库以及读写数据库的用户账户。要添加用户,可在MongoDB shell中使用方法createUser()。createUser()将一个文档对象作为参数,让您能够指定用户名、角色和密码。下面列出了可在文档对象中指定的字段。

image-20221105210631583

MongoDB提供了多种可分配给用户账户的角色,这些角色让您能够赋予用户账户复杂的权限和限制。下面列出了一些可分配给用户的常见角色。

image-20221105210728236

image-20221105210738186

提示:角色readAnyDatabase、readWriteAnyDatabase、dbAdminAnyDatabase和userAdminAnyDatabase只能分配给admin数据库中的用户账户,因为它们指定的是对所有数据库的权限

二、实验步骤

  1. 启动MongoDB数据库
  2. 现在创建一个超级账号

image-20221105213339063

创建成功,其中user为用户名,pwd为密码,roles为指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选。

  1. 接下来我们关闭MongoDB数据服务,验证root账户

image-20221106141438256

  1. 登录前应启用身份验证,打开mongodb.config文件,将"#auth =true"前面的#去掉。

image-20221106142036592

  1. 开启mongod服务

image-20221106143539804

  1. 下面我们使用root超级用户,并指定admin库进行登录

image-20221106144031053

  1. 查询当前正在使用的数据库并查询所有数据库名称

image-20221106144122153

  1. 在test数据库下,创建只读用户和读写用户

image-20221106144534417

image-20221106145151661

  1. 查看当前库下的所有用户

image-20221106145234991

上面创建了2个账号,现在验证其权限

  1. 输入exit命令,退出当前用户,进入到只读用户’zhangyur’。

image-20221106145454863

  1. 向集合mycollection中插入数据

image-20221106145716079

插入失败,因为我们当时创建用户时就只赋予它只读权限,因此无法插入数据,我们切换到拥有读写权限的’zhangyu’用户,再次插入数据。

image-20221106145911579

  1. 跨库创建用户,切换到admin数据库,登录root用户,在admin库下创建test库的用户

image-20221106150511386

  1. 查询所有用户

image-20221106150554348

  1. 可以看到在admin库下存在’test’库的账户kuaku,切换到test库下验证kuaku用户。

image-20221106150639967

认证失败!我们再切换到’admin’库下验证kuaku用户。

image-20221106150719465

认证成功!结果说明了在admin下创建的用户,不能直接在其他库验证,只能在用户的创建库下认证,数据库帐号是跟着数据库来走的,哪里创建哪里认证。

  1. 创建了这么多用户,我们来查询一下所有用户

image-20221106151059851

image-20221106151113290

image-20221106151128368

image-20221106151138092

  1. 删除‘kuaku’用户

image-20221106151223806

至此,实验结束!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Augenstern K

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

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

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

打赏作者

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

抵扣说明:

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

余额充值