db.getRoles()
定义
db.getRoles()
返回运行该命令的数据库中所有角色的信息。该方法可以带或不带参数运行。
如果不带参数运行,
db.getRoles()
会返回数据库的 用户定义角色的继承信息。要返回更多信息,请向
db.getRoles()
传递包含以下字段的文档:字段类型说明rolesInfo
整型将此字段设置为1
以检索所有用户定义的角色。showAuthenticationRestrictions
布尔可选。将该字段设置为
true
,以在输出中包含身份验证限制。身份验证限制指出了具有此角色的用户可以连接的 IP 地址。默认情况下,此字段为
false
,这意味着db.getRoles()
输出不包含身份验证限制。showBuiltinRoles
布尔可选。将此字段设为 true,可显示内置角色和用户定义的角色。showPrivileges
布尔可选。将此字段设置为true
以显示角色权限,包括从其他角色继承的权限和直接定义的权限。默认情况下,该命令仅返回此角色从中继承权限的角色,而不返回特定权限。db.getRoles()
会封装rolesInfo
命令。
兼容性
此方法可用于以下环境中托管的部署:
重要
MongoDB Atlas集群不支持此命令。 有关Atlas支持所有命令的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
必需的访问权限
示例
本节中的示例展示如何使用 db.getRoles
来:
显示角色权限和内置角色
以下操作返回 products
数据库上的所有角色,包括角色权限和内置角色:
use products db.getRoles( { rolesInfo: 1, showPrivileges: true, showBuiltinRoles: true } )
示例输出(为便于阅读已被缩短):
{ roles: [ { role: 'dbOwner', db: 'products', isBuiltin: true, roles: [], inheritedRoles: [], privileges: [ { resource: { db: 'products', collection: '' }, actions: [ 'analyze', 'bypassDocumentValidation', 'changeCustomData', ... ] }, { resource: { db: 'products', collection: 'system.profile' }, actions: [ 'changeStream', 'collStats', 'convertToCapped', ... ] } ], inheritedPrivileges: [ { resource: { db: 'products', collection: '' }, actions: [ 'analyze', 'bypassDocumentValidation', 'changeCustomData', ... ] } ] }, ... ] }
显示身份验证限制
以下操作返回 product
数据库上所有用户定义角色的角色继承信息和身份验证限制:
use products db.getRoles( { rolesInfo: 1, showAuthenticationRestrictions: true } )
示例输出:
{ roles: [ { _id: 'products.associate', role: 'associate', db: 'products', roles: [ { role: 'readWrite', db: 'products' } ], authenticationRestrictions: [ [ { clientSource: [ '198.51.100.0' ] } ] ], isBuiltin: false, inheritedRoles: [ { role: 'readWrite', db: 'products' } ], inheritedAuthenticationRestrictions: [ [ { clientSource: [ '198.51.100.0' ] } ] ] } ], ok: 1 }