db.grantPrivilegesToRole()
Definição
db.grantPrivilegesToRole(rolename, privileges, writeConcern)
Concedeprivilégios adicionais para um role definido pelo usuário .
Importante
Método mongosh
Esta página documenta um método
mongosh
. Esta não é a documentação de comandos de banco de dados nem drivers específicos de linguagem, como Node.js.Para o comando do banco de dados, consulte o comando
grantPrivilegesToRole
.Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.
O método
db.grantPrivilegesToRole()
utiliza a seguinte sintaxe:db.grantPrivilegesToRole( "< rolename >", [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], { < writeConcern > } ) O método
db.grantPrivilegesToRole()
utiliza os seguintes argumentos:ParâmetroTipoDescriçãorolename
stringO nome da role à qual conceder privilégios.privileges
arrayOs privilégios para adicionar à role. Para saber o formato de um privilégio, consulteprivileges
.writeConcern
documentoOpcional. O nível da write concern para a operação. Consulte Especificação de write concern.
O método
db.grantPrivilegesToRole()
pode conceder um ou mais privilégios. Cada<privilege>
tem a seguinte sintaxe:{ resource: { <resource> }, actions: [ "<action>", ... ] }
Compatibilidade
Esse método está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Este comando não é suportado em clusters M0, M2 e M5 . Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Comportamento
réplicaSet
Se executado em um conjunto de réplicas, db.grantPrivilegesToRole()
é executado usando a preocupação de gravação "majority"
por padrão.
Escopo
Exceto para roles criadas no banco de dados do admin
, uma role pode incluir somente privilégios que se aplicam ao seu banco de dados
Uma role criada no banco de dados admin
pode incluir privilégios que se aplicam ao banco de dados admin
, a outros bancos de dados ou ao recurso de cluster.
Acesso necessário
Você deve ter a ação grantRole
no banco de dados que é alvo do privilégio para conceder o privilégio. Para conceder um privilégio em vários bancos de dados ou no recurso cluster
, você deve ter a ação grantRole
no banco de dados admin
.
Exemplo
A seguinte operação do db.grantPrivilegesToRole()
concede dois privilégios adicionais para a função inventoryCntrl01
, que existe no banco de dados products
. A operação é executada neste banco de dados:
use products db.grantPrivilegesToRole( "inventoryCntrl01", [ { resource: { db: "products", collection: "" }, actions: [ "insert" ] }, { resource: { db: "products", collection: "system.js" }, actions: [ "find" ] } ], { w: "majority" } )
O primeiro privilégio permite aos usuários com esta role executar a ação insert
em todas as collections do banco de dados products
, exceto as collections do sistema. Para acessar uma collection de sistema, um privilégio deve especificá-la explicitamente no documento de recurso, como no segundo privilégio.
O segundo privilégio permite que os usuários com essa função executem a ação find
na collection system.js
do sistema do banco de dados product
.