mongodb系列 ~ 用户和权限
一 验证机制
1 MONGODB-CR v3.0以下
2 SCRAM-SHA-1 v3.0以上mongodb
二 创建程序账户
use dbname
db.createUser({user: "username",pwd: "password",roles: [ { role: "read|readwrite", db: "dbname" } #创建读/读写账户
三 创建管理账户
use admin db.createUser({user:"mongo_backup",pwd:"123456",roles:["backup"]}); 创建备份账户 db.createUser({user:"root",pwd:"password",roles:[{role:"root",db:"admin"}]}) 创建管理员账户
readAnyDatabase
四 内置admin库
- readAnyDatabase
- readwriteAnyDatabase:
- root
- backup
五 账户管理
- 账户信息存储在admin.system.users集合中
- db.system.users.remove({user:""}); 删除用户
六 架构-用户
- 对于 mongos集群,用户存储在全局admin库中
- 对于 副本集集群,用户存储在各自primary的admin库中
七 权限补充问题
1 内置的role只能实现基于db级别的权限控制,如果需要控制collections,需要创建单独的role
下面是一个案例 db.createRole( { role:"testrole",//角色名称 privileges: [ // 权限集 { resource: { db:"jhr", collection:"" }, actions: [ "find", "insert", "remove","update" ] //角色可进行的操作,注意这里是一个数组 } ], roles: [] // 是否继承其他的角色,如果指定了其他角色那么新创建的角色自动继承对应其他角色的所有权限,该参数必须显示指定 } )