Docs 菜单

Docs 主页开发应用程序MongoDB Manual

特权操作

在此页面上

  • 查询和写入操作
  • 数据库管理操作
  • 部署管理操作
  • 变更流操作
  • 复制操作
  • 分片操作
  • 服务器管理操作
  • 会话操作
  • Atlas Search 索引操作
  • 诊断操作
  • 内部操作

特权操作定义了用户可以对资源执行的操作。MongoDB 特权包括资源和允许的操作。此页面列出了按常见用途分组的可用操作。

MongoDB 可提供内置角色以及“资源与允许操作”的预定义对。有关所授予操作的列表,请参阅内置角色。要定义自定义角色,请参阅创建用户定义的角色。

find

用户可执行以下命令和等效的辅助方法:

输出至集合时,mapReduce 命令和 db.collection.mapReduce() 辅助方法的查询部分为必填项。

findAndModify 命令和 db.collection.findAndModify() 辅助方法的查询部分为必填项。

cloneCollectionAsCappedrenameCollection 命令以及 db.collection.renameCollection() 辅助方法的集合为必填项。

如果用户没有 listDatabases特权操作,则用户可以运行listDatabases命令以返回用户拥有特权的数据库列表(包括用户对特定集合拥有特权的数据库),前提是该命令在未指定authorizedDatabases选项或将其设置为true的情况下运行。

将此操作应用于数据库或集合资源。

insert

用户可执行以下命令及其等效方法:

输出至集合时,mapReduce 命令和 db.collection.mapReduce() 辅助方法的输出部分为必填项。

使用 $out$merge 管道操作符时,aggregate 命令和 db.collection.aggregate() 辅助方法为必填项。

upsert 选项一起使用时,updatefindAndModify 命令以及等效辅助方法为必填项。

以下命令及其辅助方法的目标集合为必填项:

将此操作应用于数据库或集合资源。

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

对于支持 bypassDocumentValidation 选项的命令和方法,用户可以绕过文档验证。以下命令及其等效方法支持绕过文档验证:

将此操作应用于数据库或集合资源。

useUUID

用户可以使用 UUID 执行以下命令,就好像它是命名空间一样:

例如,此特权授权用户运行以下命令,该命令使用给定 UUID 的集合执行 find 命令。要成功执行此操作,用户还必须获得授权,才能在与给定 UUID 对应的集合命名空间上执行 find 命令。

db.runCommand({find: UUID("123e4567-e89b-12d3-a456-426655440000")})

有关集合 UUID 的更多信息,请参阅集合。

将此操作应用于 cluster 资源。

changeCustomData

用户可以更改给定数据库中任何用户的自定义信息。将此操作应用于数据库资源。

changeOwnCustomData

用户可以更改自己的自定义信息。将此操作应用于数据库资源。另请参阅更改密码和自定义数据。

changeOwnPassword

用户可以更改自己的密码。将此操作应用于数据库资源。另请参阅更改密码和自定义数据。

changePassword

用户可以更改给定数据库中任何用户的密码。将此操作应用于数据库资源。

createCollection

用户可以执行 db.createCollection() 方法。将此操作应用于数据库或集合资源。

createIndex

提供对 db.collection.createIndex() 方法和 createIndexes 命令的访问权限。将此操作应用于数据库或集合资源。

createRole

用户可在指定数据库中创建新角色。将此操作应用于数据库资源。

createUser

用户可在给定数据库中创建新用户。将此操作应用于数据库资源。

dropCollection

用户可以执行 db.collection.drop() 方法。将此操作应用于数据库或集合资源。

dropRole

用户可以从给定数据库中删除任何角色。将此操作应用于数据库资源。

dropUser

用户可以从给定数据库中删除任何用户。将此操作应用于数据库资源。

enableProfiler

用户可以执行 db.setProfilingLevel() 方法。将此操作应用于数据库资源。

grantRole

用户可以将数据库中的任何角色授予系统中任意数据库中的任意用户。将此操作应用于数据库资源。

killCursors

从 MongoDB 4开始。 2 ,无论用户是否具有killCursors的特权,用户始终可以终止自己的游标。因此, killCursors特权在 MongoDB 4中没有影响。 2 +。

在 MongoDB 3中。 6 。 3到 MongoDB 4 。 0 .x,启用访问控制后,用户需要killCursors特权才能终止自己的游标。创建游标时,游标与用户相关联。将此操作应用于集合资源。

killAnyCursor

用户可以终止任何游标,甚至是其他用户创建的游标。将此操作应用于集合资源。

planCacheIndexFilter

用户可以运行planCacheClearFiltersplanCacheListFiltersplanCacheSetFilter命令。将planCacheIndexFilter操作应用于集合资源。

revokeRole

用户可以从系统中的任何数据库上删除任何用户的任何角色。将此操作应用于数据库资源。

setAuthenticationRestriction

运行以下命令时,用户可以在 user 文档中指定 authenticationRestrictions 字段:

运行以下命令时,用户可以在 role 文档中指定 authenticationRestrictions 字段:

注意

以下内置角色可授予此特权:

作为可传递性,restoreroot 角色也提供此特权。

将此操作应用于数据库资源。

setFeatureCompatibilityVersion

用户可以运行 setFeatureCompatibilityVersion 命令。将此操作应用于 cluster 资源。

unlock

用户可以执行 db.fsyncUnlock() 方法。将此操作应用于 cluster 资源。

viewRole

用户可以查看给定数据库中任何角色的信息。将此操作应用于数据库资源。

viewUser

用户可以查看给定数据库中任何用户的信息。将此操作应用于数据库资源。

authSchemaUpgrade

用户可以执行 authSchemaUpgrade 命令。将此操作应用于 cluster 资源。

cleanupOrphaned

用户可以执行 cleanupOrphaned 命令。将此操作应用于 cluster 资源。

cpuProfiler

用户可以启用并使用 CPU 剖析器。将此操作应用于 cluster 资源。

inprog

用户可使用 db.currentOp() 方法返回待执行和活动操作的信息。将此操作应用于 cluster 资源。

3.2.9 版本中已更改:即使没有 inprog 特权,在 mongod 实例上,用户也可以通过运行 db.currentOp( { "$ownOps": true } ) 查看自己的操作。

invalidateUserCache

提供对 invalidateUserCache 命令的访问权限。将此操作应用于 cluster 资源。

killop

用户可以执行 db.killOp() 方法。将此操作应用于 cluster 资源。

3.2.9 版本中已更改:即使没有针对 mongod 实例的 killop 特权,用户仍可终止自己的操作。

planCacheRead

用户可以运行以下操作:

将此操作应用于数据库或集合资源。

planCacheWrite

用户可以执行 planCacheClear 命令以及 PlanCache.clear()PlanCache.clearPlansByQuery() 方法。将此操作应用于数据库或集合资源。

storageDetails

7.0 中已弃用:storageDetails 操作已从数据库中删除。

changeStream

在特定集合、特定数据库中的所有非system集合或所有数据库中的所有非system集合上具有changeStreamfind的用户都可以打开该资源的变更流游标

appendOplogNote

用户可以向 oplog 中追加注释。将此操作应用于 cluster 资源。

replSetConfigure

用户可以配置副本集。将此操作应用于 cluster 资源。

replSetGetConfig

用户可以查看副本集的配置。提供对 replSetGetConfig 命令和 rs.conf() 辅助方法的访问权限。

将此操作应用于 cluster 资源。

replSetGetStatus

用户可以执行 replSetGetStatus 命令。将此操作应用于 cluster 资源。

replSetHeartbeat

用户可以执行已弃用的 replSetHeartbeat 命令。将此操作应用于 cluster 资源。

replSetStateChange

用户可以通过 replSetFreezereplSetMaintenancereplSetStepDownreplSetSyncFrom 命令更改副本集的状态。将此操作应用于 cluster 资源。

resync

用户可以执行已弃用的 resync 命令。将此操作应用于 cluster 资源。

addShard

用户可以执行 addShard 命令。将此操作应用于 cluster 资源。

checkMetadataConsistency

用户可以执行 checkMetadataConsistency 命令。将此操作应用于 cluster、数据库或集合资源。

7.0 版本中的新增功能

clearJumboFlag

从 4.2.3 和 4.0.15 开始可用

需要使用 clearJumboFlag 命令清除数据段的巨型标志。将此操作应用于数据库或集合资源。

包含在 clusterManager 内置角色中。

enableSharding

注意

适用资源

该操作可以应用于以下任一情况:

  • 数据库集合资源,用于为数据库启用分片或对集合进行分片。

  • 集群资源,用于执行各种分片区域操作。

资源
说明

授予用户执行以下操作的特权:

从 4.2.2、4.0.14、3.6.16 版开始

授予用户执行以下分片区域操作的特权:

如果您对config数据库中的相应集合执行find / update操作,则也可以执行这些分片区域操作。详见具体操作。

refineCollectionShardKey

提供优化分片集合的分片键并运行 refineCollectionShardKey 命令的特权。将此操作应用于数据库集合资源。

包含在 clusterManager 内置角色中。

reshardCollection

用户可以执行 reshardCollection 命令。将此操作应用于数据库集合资源。

版本 5.0 中的新增功能

flushRouterConfig

用户可以执行 flushRouterConfig 命令。将此操作应用于 cluster 资源。

getShardMap

用户可以执行 getShardMap 命令。将此操作应用于 cluster 资源。

getShardVersion

用户可以执行 getShardVersion 命令。将此操作应用于数据库资源。

listShards

用户可以执行 listShards 命令。将此操作应用于 cluster 资源。

moveChunk

用户可以执行 moveChunkmoveRange 命令。此外,只要特权应用于适当的数据库资源,用户还可以执行 movePrimary 命令。将此操作应用于数据库或集合资源。

removeShard

用户可以执行 removeShard 命令。将此操作应用于 cluster 资源。

shardedDataDistribution

用户可以执行 $shardedDataDistribution 聚合管道阶段。

6.0.3 版本新增

shardingState

用户可以执行 shardingState 命令。将此操作应用于 cluster 资源。

splitVector

用户可以执行 splitVector 命令。将此操作应用于数据库或集合资源。

applicationMessage

用户可以执行 logApplicationMessage 命令。将此操作应用于 cluster 资源。

bypassWriteBlockingMode

即使在 setUserWriteBlockMode 命令阻止写入时,用户也可以执行写入操作。将此操作应用于 cluster 资源。

closeAllDatabases

用户可以执行已弃用的 closeAllDatabases 命令。将此操作应用于 cluster 资源。

collMod

用户可以执行 collMod 命令。将此操作应用于数据库或集合资源。

compact

用户可以执行 compact 命令。将此操作应用于数据库或集合资源。

compactStructuredEncryptionData

用户可以执行 compactStructuredEncryptionData 命令。将此操作应用于数据库或集合资源。

connPoolSync

用户可以执行内部connPoolSync 命令。将此动作应用于 cluster 资源。

convertToCapped

用户可以执行 convertToCapped 命令。将此操作应用于数据库或集合资源。

dropConnections

用户可以执行 dropConnections 命令。将此操作应用于 cluster 资源。

dropDatabase

用户可以执行 dropDatabase 命令。将此操作应用于数据库资源。

dropIndex

用户可以执行 dropIndexes 命令。将此操作应用于数据库或集合资源。

forceUUID

用户可以使用 applyOps 命令通过用户定义的集合 UUID 创建集合。

将此操作应用于 cluster 资源。

fsync

用户可以执行 fsync 命令。将此操作应用于 cluster 资源。

getDefaultRWConcern

用户可以发出管理 getDefaultRWConcern 命令。将此操作应用于 cluster 资源。

getParameter

用户可以执行 getParameter 命令。将此操作应用于 cluster 资源。

hostInfo

提供有关 MongoDB 实例所运行服务器的信息。将此操作应用于 cluster 资源。

oidReset

需要重置对象标识符中使用的 5 字节随机字符串。

logRotate

用户可以执行 logRotate 命令。将此操作应用于 cluster 资源。

reIndex

用户可以执行 reIndex 命令。将此操作应用于数据库或集合资源。

renameCollectionSameDB

允许用户使用 renameCollection 命令重命名当前数据库上的集合。将此操作应用于数据库资源。

此外,用户必须在源集合上具有find ,或者在目标集合上没有find

如果已存在具有新名称的集合,则用户还必须对目标集合执行dropCollection操作。

rotateCertificates

用户可以执行 rotateCertificates 命令。将此操作应用于 cluster 资源。

setDefaultRWConcern

用户可以发出管理 setDefaultRWConcern 命令。将此操作应用于 cluster 资源。

setParameter

用户可以执行 setParameter 命令。将此操作应用于 cluster 资源。

setUserWriteBlockMode

用户可以执行 setUserWriteBlockMode 命令。将此操作应用于 cluster 资源。

shutdown

用户可以执行 shutdown 命令。将此操作应用于 cluster 资源。

touch

用户可以执行已弃用的 touch 命令。将此操作应用于 cluster 资源。

impersonate

用户可以使用 usersroles 模式执行 killAllSessionsByPattern 命令。将此操作应用于 cluster 资源。

要运行killAllSessionsByPattern命令,用户还必须对集群资源具有killAnySession特权。

listSessions

用户可以为所有用户或指定用户执行 $listSessions 操作或 $listLocalSessions 操作。将此操作应用于 cluster 资源。

killAnySession

用户可以执行 killAllSessionskillAllSessionsByPattern 命令。将此操作应用于 cluster 资源。

提示

另请参阅:

以下操作使用户能够运行Atlas Search 数据库命令。这些操作仅与MongoDB Atlas 上托管的部署相关。

createSearchIndexes

用户可以运行 createSearchIndexes 数据库命令。将此操作应用于数据库或集合资源。

dropSearchIndex

用户可以运行 dropSearchIndex 数据库命令。将此操作应用于数据库或集合资源。

listSearchIndexes

用户可以运行 $listSearchIndexes 聚合阶段。将此操作应用于数据库或集合资源。

updateSearchIndex

用户可以运行 updateSearchIndex 数据库命令。将此操作应用于数据库或集合资源。

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 命令。将此操作应用于数据库资源。

注意

从版本 4.0 开始,没有所需权限的用户可以运行 listCollections 命令,并将 authorizedCollectionsnameOnly 选项设置为 true。在此情况下,该命令仅返回用户拥有特权的集合的名称和类型。

listIndexes

用户可以执行 listIndexes 命令。将此操作应用于数据库或集合资源。

netstat

用户可以执行 netstat 命令。将此操作应用于 cluster 资源。

serverStatus

用户可以执行 serverStatus 命令。将此操作应用于 cluster 资源。

validate

用户可以执行 validatevalidateDBMetadata 命令。将此操作应用于数据库或集合资源。

top

用户可以执行 top 命令。将此操作应用于 cluster 资源。

anyAction

允许对资源执行任何操作。除非绝对必要,否则请勿分配此操作。

internal

允许内部操作。除非绝对必要,否则请勿分配此操作。

applyOps

用户可以执行 applyOps 命令。将此操作应用于 cluster 资源。

← 资源文档