Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

db.getRoles()

在此页面上

  • 定义
  • 兼容性
  • 必需的访问权限
  • 示例
  • 显示角色权限和内置角色
  • 显示身份验证限制
db.getRoles()

返回运行该命令的数据库中所有角色的信息。该方法可以带或不带参数运行。

如果不带参数运行, db.getRoles() 会返回数据库的 用户定义角色的继承信息。

要返回更多信息,请向 db.getRoles() 传递包含以下字段的文档:

字段
类型
说明
rolesInfo
整型
将此字段设置为 1 以检索所有用户定义的角色。
showAuthenticationRestrictions
布尔

可选。将该字段设置为 true,以在输出中包含身份验证限制。身份验证限制指出了具有此角色的用户可以连接的 IP 地址。

默认情况下,此字段为 false,这意味着 db.getRoles() 输出不包含身份验证限制。

showBuiltinRoles
布尔
可选。将此字段设为 true,可显示内置角色和用户定义的角色。
showPrivileges
布尔
可选。将此字段设置为 true 以显示角色权限,包括从其他角色继承的权限和直接定义的权限。默认情况下,该命令仅返回此角色从中继承权限的角色,而不返回特定权限。

db.getRoles() 会封装 rolesInfo 命令。

此方法可用于以下环境中托管的部署:

重要

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

要查看角色的信息,您必须已被显式授予该角色,或必须有权对该角色的数据库执行 viewRole 操作

本节中的示例展示如何使用 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
}

后退

db.getRole