数据库用户角色有:
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
1、可以在 system.indexes, system.namespaces, system.profile 集合上的下列操作:
collStats
dbHash
dbStats
find
killCursors
listIndexes
listCollections
dropCollection and createCollection on system.profile only
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)