MongoDB创建用户时提供了各种权限,默认的内置权限参见文档:here
一般常见的权限是 readWrite, userAdmin, dbAdmin, dbOwner.
readWrite:
支持find,insert,remove,update等
userAdmin:
支持createUser,createRole,changePassword等。
dbAdmin:
支持dbstats,find,listCollections,dropCollection等
dbOwner:
是readWrite,userAdmin和dbAdmin的权限集合。
那么下面这条命令
use admin
db.createUser({user:'Matt',pwd:'123456',roles:[{role:"dbOwner",db:"admin"},{role:"dbOwner",db:"Bourne"}]})
含义是Matt可以在admin库验证权限,之后可以在Bourne读取记录和创建用户了。
use Bourne
db.createUser({user:'Bruce',pwd:'123456',roles:[{role:"dbOwner",db:"admin"},{role:"dbOwner",db:"Bourne"}]})
Matt是Bourne的dbOwner,所以他可以createUser,另外他也是admin的dbOwner,所以他也可以给Bruce加上admin的dbOwner权限。
假如他创建另外一个用户Wayne
use Bourne
db.createUser({user:'Wayne',pwd:'123456',roles:[{role:"dbOwner",db:"Bourne"}]})
显然Wayne只拥有Bourne库的操作权限。
要注意的是,在哪个库创建的用户,就在哪个库验证权限,之后再切到其他库。
dbOwner算是很高的权限了,既可以添加用户,又可以添加记录。 对于一般用户说,只需要read或者readWrite就足够了。不过,mongo还可以有更高类似于root的权限。
db.createUser({user:'root',pwd:'123456',roles:[{role:"userAdminAnyDatabase",db:"admin"}, {role:"readAnyDatabase",db:"admin"}]})
网友评论