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命令。

要查看角色的信息,您必须已被显式授予该角色,或必须有权对该角色的数据库执行 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()