mongodb权限

1.用户

用户+所属库: 在哪个库下创建的用户就属于哪个库的

2.角色

每个角色包括一组权限

3.权限

1)内置角色

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

2)权限描述

权限类型描述
read允许用户读取指定数据库
readWrite允许读写指定数据库的权限
dbAdmin数据库管理权限,允许用户在指定数据库中执行管理函数,如索引创建,删除,查看统计等
userAdmin数据库用户的管理权限,包括创建用户,授权的管理
clusterAdmin只在admin数据库中可用,拥有所有分片或副本集相关函数的管理权限
readAnyDatabase只在admin数据库中可用,允许用户读取所有数据库权限
readWriteAnyDatabase只在admin数据库中可用,允许用户读写所有数据库的权限
userAdminAnyDatabase只在admin数据库中可用,拥有所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,拥有所有数据库的dbAdmin权限
root超级用户角色,只在admin数据库中可用
dbOwner某数据库的所有者,拥有该库的所有权限,包括的readWriter,dbAdmin和userAdmin权限

3)创建用户
db.createUser({
user:"",
pwd:"",
customData:{},
roles:[{role:"",db:""}|"",…]
})

  • user:新建用户名
  • pwd:新建用户密码
  • customData:存放一些用户相关的自定义数据,该属性可忽略
  • roles:配置用户的权限,数组类型

4)更新用户权限
db.updateUser(“用户名”,“roles”:[{“role”:“角色名称”},{“更新像2”:“更新内容”}])

5)修改密码
a)使用db.updateUser()函数更新密码
b)使用db.changeUserPassword()函数更新密码

// 创建用户并授权
use admin      // use命令切换数据库时,如果该数据库不存在,则会自动创建该数据库
db.createUser({user:"user_name",pwd:"password",roles:[{"role":role_priviliges,"db":"db_name"}]})

// 创建管理员用户,管理员通常没有数据库的读写权限,只有操作用户的权限,管且员需要在admin数据库下创建
db.createUser({user:"admin",pwd:"123456",roles:[{role:'userAdminAnyDatabase',db:"admin"}]})
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

// 创建普通读写用户账号
db.createUser({user:"zhangsan",pwd:"123456",roles:[{role:'readWrite',db:"test"}]})

// 更新角色
db.updateUser("zhangsan",{roles:[{"role":"read","db":'test'}]})

// changeUserPassword修改密码
use db_name
db.changeUserPassword('user_name','password')

// updateUser修改密码
db.updateUser("用户名",{"pwd":"新密码"})

// 添加角色
use db_name
db.grantRolesToUser("user_name",[{role:"role_priviliges",db:"admin"}])

// 回收权限
use db_name
db.revokeRolesFromUser("user_name",[{role:"role_priviliges",db:"admin"}])

// 删除用户
db.dropUser("user_name")

// 查看admin库中的所有用户信息,开启auth认证
db.system.users.find()

// 用户认证
db.auth('admin','123456');

4.连接
数据库会为每一个MongoDB数据库连接创建一个队列,存放这个连接的请求。每个连接都有独立的队列。
(当开发者用一个线程插入数据,用另一个线程检查是否成功插入时,就会经常遇到这种问题)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值