mongodb内置角色:
用户属于何种角色,可以理解为用户拥有何种权限?
在创建用户时,是需要绑定到角色。
角色表中,普通数据库,admin数据库:可以理解为针对某一普通数据库设置用户权限,而设置在admin数据库当中的用户角色,是针对的所有数据库而言。
举个例子:
创建一个用户,对hello这个数据拥有all权限(也就是角色表中的dbowner),并且可以对所有数据拥有只读权限(也就是权限表中的readAnyDatabase)。
普通数据库,意味着在设置用户角色时,db关键字只能是其他创建的数据库
admin数据库,意味着在设置用户角色时,db关键字只能是admin数据库
测试权限:
h1用户只能以admin数据登录,对所有数据库操作权限是readAnyDatabase,对hello数据操作权限是dbOwner
h1用户不能以hello数据库登录,报错,认证失败
查看设置的权限:
h1解释如上
h2用户只能以hello数据库登录,对hello数据库拥有所有的权限,
h3用户只能以admin数据库登录,对hello数据库拥有所有的权限,但是需要创建添加一次,不会干扰到数据。
总结:
1、创建Mongodb数据的的用户,全部都是保存在admin数据库,system.user中。
2、admin数据库的角色权限,是针对所有数据库的,建议是在admin数据库状态下创建。
3、普通数据库的角色权限,是针对某一个数据库的,某数据库状态下创建。
4、在哪个数据库状态下创建,此用户连接时就连哪个数据库即可。
需要注意:
在普通数据库状态下创建admin数据库角色权限,db选择是admin,需要此用户是否有admin库的角色权限,才能创建。
cli命令行登录数据库:
# 第一次指定登录数据库,
mongo --port 27017 -u myadmin -p 'admin' --authenticationDatabase 'admin'
# 连接上数据库之后
use admin
db.auth(username,passwd)
# 之后就可以
mongo --host 192.168.2.176
db.auth