数据库用户角色有:

read

readWrite

数据库管理员角色有:

dbAdmin

dbOwner (包含 dbAdmin,readWrite,userAdmin)

userAdmin

群集管理员角色有:

clusterAdmin (包含 clusterManager,clusterMonitor,hostManager)

clusterManager

clusterMonitor

hostManager

所有的数据库角色有:

readAnyDatabase

readWriterAnyDatabase

userAdminAnyDatabase

dbAdminAnyDatabase

超级用户角色

root(包含 readWriteAnyDatabase,dbAdminAnyDatabase,userAdminAnyDatabase,clusterAdmin)

内置角色(Built-in  Roles)

数据库角色

read:

可以访问非系统级别的所有collections的数据;

system.indexes     system.js     system.namespaces

允许调用下列功能:

collStats

dbHash

dbStats

find

killCursors

listIndexes

listCollections

readWrite:

可以调用读所有集合的功能,不能写系统级的集合除 system.js

允许调用下列功能:

collStats

convertToCapped

createCollection

dbHash

dbStats

dropCollection

createIndex

dropIndex

find

emptycapped

insert

killCurrsors

listIndexes

listCollections

remove

renameCollectionSameDB

update

数据库管理员角色

dbAdmin

system.indexes, system.namespaces, system.profile

collStats

dbHash

dbStats

find

killCursors

listIndexes

listCollections

dropCollection and createCollection on system.profile

2、可以在非系统级集合上调用以下操作:

collMod

collStats

compact

convertToCapped

createCollection

createIndex

dbStats

dropCollection

dropDatabase

dropIndex

enableProfiler

indexStats

reIndex

renameCollectionSameDB

repairDatabase

storageDetails

validate

3、dbAdmin角色不可全部访问系统级集合

userAdmin

该数据库管理员角色  提供 在当前数据库中 创建、修改 角色和用户账号的能力。

拥有该角色的用户可以给其他用户授予任何权限(包括userAdmin角色),这样就会间接导致超级用户的产生;

提供下列功能:

changeCustomData

changePassword

createRole

createUser

dropRole

dropUser

grantRole

revokeRole

viewRole

viewUser

dbOwner

readWrite , dbAdmin userAdmin

集群(复制集)管理员角色

clusterAdmin

该角色包含:clusterManager、clusterMonitor、hostManager和 dropDatabase

clusterManager

可以访问 local 和config 数据库

addShard

applicationMessage

cleanupOrphaned

flushRouterConfig

listShards

removeShard

replSetConfigure

replSetGetStatus

replSetStateChange

resync

enableSharding

moveChunk

splitChunk

splitVector

可以对 config 数据库执行

insert

remove

update

collStats

dbHash

find

killCursors

clusterMonitor

db.createUser({user:"mmsUser",pwd:"mmsUser@2016",roles:["clusterMonitor"]})

connPollStats

cursorInfo

getCmdLineOpts

getLog

getParameter

getShardMap

hostInfo

inprog

listDatabases

lisstShards

netstat

replSetGetStatus

serverStatus

shardingState

top

collStats

dbStats

getShardVersion

在sharding的config 上提供

collStats

dbHash

dbStats

find

killCursors

hostManager

applicationMessage

closeAllDatabases

connPoolSync

cpuProfiler

diagLogging

flushRouterConfig

fsync

invalidateUserCache

killop

logRotate

resync

setParameter

showdown

touch

unlock

所有数据库角色 All-Database Roles

readAnyDatabase

在集群的所有数据库上  提供与 read角色相同的权限 ,同时提供 listDatabases 命令权限

readWriteAnyDatabase

在集群的所有数据库上  提供与 readWrite 角色相同的权限 ,同时提供 listDatabases 命令权限

userAdminAnyDatabase

在集群中的所有数据库上  提供和 userAdmin角色相同的权限,除此外还提供一下权限

authSchemaUpgrade

invalidateUserCache

listDatabases

该角色还提供在  admin数据库的 system.users   and   system.roles 上下列执行权限

collStats

dbHash

dbStats

find

killCursors

planCacheRead

createIndex

dropIndex

dbAdminAnyDatabase

在集群的所有数据库上  提供与 dbAdmin角色相同的权限 ,同时提供 listDatabases 命令权限

超级用户角色 Superuser Roles

root

可以运行 rolesInfo 命令来查询 某个角色在指定的数据库上具有的详细权限

db.runCommand({rolesInfo:{role:"dbAdmin",db:"dbName"}.showPrivileges:true})

亦或

db.runCommand({rolesInfo:[{role:"roleName",db:"dbName01"},{role:"roleName02",db:"dbName02"}],showPrivileges:true})

查看所有用户自定义角色和系统内置角色

db.runCommand({rolesInfo:1,showBuiltinRoles:true})

查看所有用户自定义角色

db.runCommand(rolesInfo:1,showPrivileges:true)