MongoDB权限总结


  • MongoDB启动时不添加任何参数,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库,需以--auth参数启动。
  • 在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息。当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以--auth 参数启动),直到在admin.system.users中添加了一个用户。
  • MongoDB的访问分为连接和权限验证,即使以--auth参数启动还是可以不使用用户名连接数据库,但是不会有任何的权限进行任何操作
  • admin数据库中的用户名可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以,其他数据库中的用户只能管理其所在的数据库。




MongoDB中用户的角色说明



  • read角色数据库的只读权限,包括:collStats、dbHash、dbStats、find、killCursors、listIndexes、listCollections


  • readWrite角色数据库的读写权限,包括:collStats、convertToCapped、createCollection、dbHash、dbStats、dropCollection、createIndex、dropIndex、emptycapped、find、insert、killCursors、listIndexes、listCollections、remove、renameCollectionSameDB、update


  • dbAdmin角色数据库的管理权限,包括:collStats、dbHash、dbStats、find、killCursors、listIndexes、listCollections、dropCollection and createCollection on system.profile only


  • userAdmin角色数据库的用户管理权限,包括:changeCustomData、changePassword、createRole、createUser、dropRole、dropUser、grantRole、revokeRole、viewRole、viewUser


  • readAnyDatabase角色任何数据库的只读权限(和read相似)


  • readWriteAnyDatabase角色任何数据库的读写权限(和readWrite相似)


  • userAdminAnyDatabase角色


任何数据库用户的管理权限(和userAdmin相似)


  • dbAdminAnyDatabase角色


任何数据库的管理权限(dbAdmin相似)