MongoDB基础篇-04-用户权限操作(即用户的CRUD)

0 借鉴两张图表示

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

1. 用户权限列表(常用几个)

命令含义
read允许用户读取指定数据库
readWrite允许用户读写指定数据库
dbAdmin允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root只在admin数据库中可用。超级账号,超级权限

上面的权限,对于新人来说,建议,自己玩一遍,会更理解。上面这些权限都是基于开启了权限的前提下生效
即 auth=true时生效

通俗一点的解释一下上面的:

  • read 读权限,比如你现在在A库当中,你想读取A库的数据,你需要A库的读权限
  • readWrite 读写权限,比如你现在在A库当中,你想读写A库的数据,你需要A库的读写权限
  • dbAdmin 数据库的DDL权限,比如你想在A库当中创建集合,索引,你就需要A库的这个权限
  • userAdmin 用户管理,比如你现在有A库的这个权限,你就可以给你同事创建操作A库的用户给他使用且赋予操作A库的读写或者dbAmin权限都行
  • 后面这几个权限都是横跨所有数据库的权限,root更是最高权限,只在admin数据库中可用,意思是比如你创建用户的时候,你需要指定db是哪个,这几个权限必须填写admin,填写其他的会报错;意思就是这个

2. 新增用户

不管是新增管理员用户,还是新增普通用户,都一样,只不过权限不一样而已

  1. mongodb初始化的时候,也就是你第一次使用 mongo客户端命令登录进去的时候,默认是没有开启权限用户认证,除非你自己特意配置了 auth=true,这个时候我们需要创建一个管理员用户;

语法: db.createUser({user:"用户名",pwd:"用户名密码",roles:[{role:"用户角色权限",db:"作用于哪个数据库"}]})

eg: db.createUser({user:“wql”,pwd:“wql”,roles:[{role:“readWrite”,db:“ccc”}]})

上面的案列意思是,创建一个用户名为wql,密码为wql的用户,他的权限读写,对应的数据库是ccc’

注意

  1. 创建普通用户时,指定的数据库得先存在
  2. 在admin库下创建用户时,比如你想给ccc库创建用户,那么你先使用use ccc 命令切换过去再创建
  3. 如果你想看下当前数据库存在哪些角色,可以使用 show users 命令查看,前提是当前认证角色必须有当前库的userAdmin权限
  4. 如果你在admin库下,你想看下当前mongodb存在多少用户,你有userAdminAnyDatabase权限的话,可以使用 db.system.users.find()命令查询
  5. 创建完一个新的用户,你需要退出重登才能看到
  6. 开启了权限认证,需要在操作库之前使用 db.auth(”账户“,”密码“) 验证,成功返回1

3. 更新用户

语法: db.updateUser("用户名",{roles:[{旧的角色信息},{新的角色信息}]})
或者: db.updateUser("用户名",{roles:[{新的角色信息}]})
其实就是覆盖之前的
更新之前先使用 有权限的用户使用show users查看当前需要修改的用户的权限

db.updateUser(“wql01”,{roles:[{role:“readWrite”,db:“abc”},{role:“read”,db:“abc”}]})

上面举例的意思是,修改wql01用户权限,之前是abc库的读写,现在改成abc的读权限

3.1 更新用户密码

  • 使用db.updateUser()函数更新密码
    语法: db.updateUser("用户名",{”pwd“:"新密码"})
  • 使用db.changeUserPassword()函数更新密码
    语法: db.changeUserPassword('旧密码',‘新密码’)

4. 删除用户

通过db.dropUser()函数可以删除指定用户,删除成功之后会返回true。在删除用户时需要切换到创建用户时所指定的数据库才可以删除。注意:需要使用具有 userAdminAnyDatabase角色管理员用户才可以删除其他用户。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Alan0517

感谢您的鼓励与支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值