一小白瞎整mongodb,认证部分被折磨的惨不忍睹,看厮可怜,特查了一下文档,浅显地总结一下mongodb认证(authentication)与受权(authorization)的联系。mongodb
建立的全部用户都在admin.库下的system.users集合下,有以下字段:数据库
其中的db字段是用于authentication用的,也就是链接mongodb的时候,指定的--authenticationDatabase选项的值。blog
roles字段里面的db是指这个用户具体对db具备什么样的角色,是只读,只写,仍是读写,也就是受权。这个db跟最外面的db没有任何关系,彻底是用来指定权限的。文档
链接Mongodb的时候,除了须要用户名,密码,还须要指定这个用户的认证db。为何须要指定这个认证db?是由于Mongodb容许存在多个同名的用户存在,但同名的用户认证db必须不能至关,以下:io
切换到其余db,能够建立同名用户:权限
上图建立了一个用户名密码为"in_admin"的用户,用haha数据库认证,对haha数据库具备读写权限,除此以外,没有其余数据库的任何执行权限。密码
补充一点就是,认证的db字段不能在建立用户时指定,它的值是你建立用户时所在的那个db。im