特权操作定义用户可以对资源执行的操作。 MongoDB权限由资源和允许的操作组成。 此页面列出了按常见目的分组的可用操作。
MongoDB提供内置角色以及预定义的资源和允许的操作对。 有关已授予操作的列表,请参阅自管理部署中的内置角色。 要定义自定义角色,请参阅创建用户定义的角色。
查询和写入操作
find用户可执行以下命令和等效的辅助方法:
aggregate适用于除$collStats$out和$indexStats之外的所有管道操作。geoSearch(在 MongoDB 5.0 中已删除)getLastError(在 MongoDB 5.1 中已删除)killCursors,但前提是此游标与当前已经过身份验证的用户相关联。mapReduce,带{out: inline}选项。resetError(在 MongoDB 5.0 中已删除)
输出至集合时,
mapReduce命令和db.collection.mapReduce()辅助方法的查询部分为必填项。findAndModify命令和db.collection.findAndModify()辅助方法的查询部分为必填项。cloneCollectionAsCapped和renameCollection命令以及db.collection.renameCollection()辅助方法的源集合为必填项。如果用户没有
listDatabases特权操作,则用户可运行listDatabases命令以返回该用户拥有特权的数据库列表(包括用户对特定集合具有特权的数据库),前提是该命令未指定authorizedDatabases选项或该选项设置为true。将此操作应用于数据库或集合资源。
insert用户可执行以下命令及其等效方法:
输出至集合时,
mapReduce命令和db.collection.mapReduce()辅助方法的输出部分为必填项。使用
$out或$merge管道操作符时,aggregate命令和db.collection.aggregate()辅助方法为必填项。与
upsert选项一起使用时,update和findAndModify命令以及等效辅助方法为必填项。以下命令及其辅助方法的目标集合为必填项:
将此操作应用于数据库或集合资源。
remove用户可以执行
delete命令和等效的辅助方法。findAndModify命令和db.collection.findAndModify(){5} 方法的写入部分为必填项。当输出至集合时指定
replace操作时,mapReduce命令和db.collection.mapReduce()辅助方法为必填项。使用
$out管道操作符时,aggregate命令和db.collection.aggregate()辅助方法为必填项。将此操作应用于数据库或集合资源。
update用户可以执行
update命令和等效的辅助方法。在未指定
replace操作的情况下输出至集合时,mapReduce命令和db.collection.mapReduce()辅助方法为必填项。findAndModify命令和db.collection.findAndModify()辅助方法为必填项。将此操作应用于数据库或集合资源。
bypassDocumentValidation版本 3.2 中的新增功能。
对于支持
bypassDocumentValidation选项的命令和方法,用户可以绕过文档验证。以下命令及其等效方法支持绕过文档验证:将此操作应用于数据库或集合资源。
数据库管理操作
changeOwnCustomData用户可以更改自己的自定义信息。 将此动作应用于数据库资源。 另请参阅更改自管理部署的密码和自定义数据。
changeOwnPassword用户可以更改自己的密码。 将此动作应用于数据库资源。 另请参阅更改自管理部署的密码和自定义数据。
createCollection用户可以执行
db.createCollection()方法。将此操作应用于数据库或集合资源。
createIndex提供对
db.collection.createIndex()方法和createIndexes命令的访问权限。将此操作应用于数据库或集合资源。
dropCollection用户可以执行
db.collection.drop()方法。将此操作应用于数据库或集合资源。
enableProfiler用户可以执行
db.setProfilingLevel()方法。将此操作应用于数据库资源。
planCacheIndexFilter用户可以运行
planCacheClearFilters、planCacheListFilters和planCacheSetFilter命令。将planCacheIndexFilter操作应用于集合资源。
setAuthenticationRestriction版本 3.6 中的新增功能。
运行以下命令时,用户可以在
user文档中指定 authenticationRestrictions 字段:运行以下命令时,用户可以在
role文档中指定authenticationRestrictions字段:注意
以下内置角色可授予此特权:
userAdmin角色在分配了该角色的数据库上提供此特权。userAdminAnyDatabase角色对所有数据库提供此特权。
将此操作应用于数据库资源。
setFeatureCompatibilityVersion用户可以运行
setFeatureCompatibilityVersion命令。将此操作应用于cluster资源。
unlock用户可以执行
db.fsyncUnlock()方法。将此操作应用于cluster资源。
部署管理操作
cleanupOrphaned用户可以执行
cleanupOrphaned命令。将此操作应用于cluster资源。
inprog用户可使用
db.currentOp()方法返回待执行和活动操作的信息。将此操作应用于cluster资源。即使没有
inprog特权,在mongod实例上,用户也可以通过运行db.currentOp( { "$ownOps": true } )查看自己的操作。
invalidateUserCache提供对
invalidateUserCache命令的访问权限。将此操作应用于cluster资源。
killop用户可以执行
db.killOp()方法。将此操作应用于cluster资源。
planCacheRead用户可以运行以下操作:
$planCacheStats聚合阶段。
将此操作应用于数据库或集合资源。
planCacheWrite用户可以执行
planCacheClear命令以及PlanCache.clear()和PlanCache.clearPlansByQuery()方法。将此操作应用于数据库或集合资源。
变更流操作
changeStream在特定集合上、特定数据库中的所有非
system集合上或所有数据库的所有非system集合上拥有changeStream和find的用户可以打开该资源的变更流游标。
复制操作
replSetGetConfig用户可以查看副本集的配置。提供对
replSetGetConfig命令和rs.conf()辅助方法的访问权限。将此操作应用于
cluster资源。
replSetGetStatus用户可以执行
replSetGetStatus命令。将此操作应用于cluster资源。
replSetStateChange用户可以通过
replSetFreeze、replSetMaintenance、replSetStepDown和replSetSyncFrom命令更改副本集的状态。将此操作应用于cluster资源。
分片操作
addShard用户可以执行
addShard命令。将此操作应用于cluster资源。
clearJumboFlag需要使用
clearJumboFlag命令清除数据段的巨型标志。将此操作应用于数据库或集合资源。包含在
clusterManager内置角色中。
enableSharding- 资源说明
授予用户执行以下操作的特权:
使用
enableSharding命令在数据库上启用分片,并使用
shardCollection命令对集合进行分片。
refineCollectionShardKey提供优化分片集合的分片键并运行
refineCollectionShardKey命令的特权。将此操作应用于数据库或集合资源。包含在
clusterManager内置角色中。
reshardCollection用户可以执行
reshardCollection命令。将此操作应用于数据库或集合资源。版本 5.0 中的新增功能。
flushRouterConfig用户可以执行
flushRouterConfig命令。将此操作应用于cluster资源。
getShardMap用户可以执行
getShardMap命令。将此操作应用于cluster资源。
listShards用户可以执行
listShards命令。将此操作应用于cluster资源。
moveChunk用户可以执行
moveChunk命令。 此外,只要特权应用于适当的数据库资源,用户还可以执行movePrimary命令。 将此操作应用于数据库或集合资源。
removeShard用户可以执行
removeShard命令。将此操作应用于cluster资源。
shardingState用户可以执行
shardingState命令。将此操作应用于cluster资源。
服务器管理操作
applicationMessage用户可以执行
logApplicationMessage命令。将此操作应用于cluster资源。
collMod用户可以执行
collMod命令。将此操作应用于数据库或集合资源。
compact用户可以执行
compact命令。将此操作应用于数据库或集合资源。
convertToCapped用户可以执行
convertToCapped命令。将此操作应用于数据库或集合资源。
dropConnections用户可以执行
dropConnections命令。将此操作应用于cluster资源。
dropDatabase用户可以执行
dropDatabase命令。将此操作应用于数据库资源。
dropIndex用户可以执行
dropIndexes命令。将此操作应用于数据库或集合资源。
fsync用户可以执行
fsync命令。将此操作应用于cluster资源。
getDefaultRWConcern用户可以发出管理
getDefaultRWConcern命令。将此操作应用于cluster资源。
getParameter用户可以执行
getParameter命令。将此操作应用于cluster资源。
oidReset需要重置对象标识符中使用的 5 字节随机字符串。
logRotate用户可以执行
logRotate命令。将此操作应用于cluster资源。
reIndex用户可以执行
reIndex命令。将此操作应用于数据库或集合资源。
renameCollectionSameDB允许用户使用
renameCollection命令重命名当前数据库上的集合。将此操作应用于数据库资源。此外,用户必须在源集合上拥有
find,或者在目标集合上没有find。如果已存在采用新名称的集合,则用户还必须对目标集合执行
dropCollection操作。
rotateCertificates用户可以执行
rotateCertificates命令。将此操作应用于cluster资源。
setDefaultRWConcern用户可以发出管理
setDefaultRWConcern命令。将此操作应用于cluster资源。
setParameter用户可以执行
setParameter命令。将此操作应用于cluster资源。
shutdown用户可以执行
shutdown命令。将此操作应用于cluster资源。
会话操作
impersonate版本 3.6 中的新增功能。
用户可以使用
users和roles模式执行killAllSessionsByPattern命令。将此操作应用于cluster资源。要运行
killAllSessionsByPattern命令,用户还必须拥有对集群资源的killAnySession特权。
listSessions版本 3.6 中的新增功能。
用户可以为所有用户或指定用户执行
$listSessions操作或$listLocalSessions操作。将此操作应用于cluster资源。
killAnySession版本 3.6 中的新增功能。
用户可以执行
killAllSessions和killAllSessionsByPattern命令。将此操作应用于cluster资源。
诊断操作
collStats用户可以执行
collStats命令。将此操作应用于数据库或集合资源。
connPoolStats用户可以执行
connPoolStats命令。将此操作应用于cluster资源。
dbHash用户可以执行
dbHash命令。将此操作应用于数据库或集合资源。
dbStats用户可以执行
dbStats命令。将此操作应用于数据库资源。
getCmdLineOpts用户可以执行
getCmdLineOpts命令。将此操作应用于cluster资源。
getLog用户可以执行
getLog命令。将此操作应用于cluster资源。
indexStats用户可以运行
$indexStats聚合管道阶段。将此操作应用于数据库或集合资源。要使用
$indexStats阶段,用户必须至少使用clusterMonitor角色进行身份验证。
listDatabases用户可以执行
listDatabases命令。将此操作应用于cluster资源。如果用户没有
listDatabases特权操作,则用户可运行listDatabases命令以返回该用户拥有特权的数据库列表(包括用户对特定集合具有特权的数据库),前提是该命令未指定authorizedDatabases选项或该选项设置为true。
listCollections用户可以执行
listCollections命令。将此操作应用于数据库资源。注意
没有所需权限的用户可以运行
listCollections命令,并将authorizedCollections和nameOnly选项设置为true。在此情况下,该命令仅返回用户拥有特权的集合的名称和类型。
listIndexes用户可以执行
listIndexes命令。将此操作应用于数据库或集合资源。
serverStatus用户可以执行
serverStatus命令。将此操作应用于cluster资源。
validate用户可以执行
validate和validateDBMetadata命令。将此操作应用于数据库或集合资源。
top用户可以执行
top命令。将此操作应用于cluster资源。
内部操作
applyOps用户可以执行
applyOps命令。将此操作应用于cluster资源。