1. 简介
mongodb开启授权登陆前,需要在数据库中创建一个拥有账号管理的授权权限的账号,也就是可以创建各类账号的账号。步骤如下
1.1. 无验证启动mongodb
1.2. 创建用户
从3.0开始默认不创建admin库,需要自己创建
1. use admin
2. db.createUser(
{ user:"admin", //user:新用户的名字
customData:{description:"superuser"}, //可以为任意内容(可选)
pwd:"admin", //用户密码
roles:[{role:"userAdminAnyDatabase",db:"admin"}] //指定用户的角色(可以传入空数组) userAdminAnyDatabase赋予用户所有数据库的用户管理(增、删)权限
}
)
3.验证用户是否创建成功
show users
4.以需授权的方式重新启动mongodb
在mongod后添加 --auth 即可
5.进入admin 登陆账号 原则:账号哪里创建,哪里验证
1. use admin
2. db.auth("admin","admin")
2. 创建超级权限账号
1. 无验证启动mongodb
2. 创建超级权限账号
1. use admin //只能在admin库创建
2. db.createUser(
{ user:"root",
pwd:"root",
roles:[{role:"root",db:"admin"}]
}
)
3. 登陆超级权限账号
1. use admin
2. db.auth("root","root")
4. 该账号拥有一切权限。
3.创建特定权限的账号
(对test1库拥有读写权限、对test2库拥有读权限)
1. 无验证启动mongodb (或者已授权的方式启动mongodb,登陆拥有用户管理权限的账号)
2. use test //在那个库创建账号没有要求。原则是哪里创建,哪里登陆
3. db.createUser(
{ user:"test",
pwd:"test",
roles:[{role:"readWrite",db:"test1"},{role:"read",db:"test2"}]
}
)
4. db.auth("test","test")
4. 附录
4.1. Built-In Roles(内置角色)
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) - 内部角色:__system
4.2. 角色作用
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
4.3. 相关方法
4.3.1. 查看该库下所有账号
show users
4.3.2. 查看服务器所有的账号
1. use admin
2. db.auth("**","**") //登陆有相关权限的账号
3. db.system.users.find().pretty();
4.3.3. 创建用户
db.createUser(
{ user:"test",
pwd:"test",
roles:[{role:"readWrite",db:"test1"},{role:"read",db:"test2"}]
}
)
4.3.4. 用户登陆
db.auth("test","test")