Definição
db.grantPrivilegesToRole(rolename, privileges, writeConcern)Concede privilégios adicionais para uma role definida pelo usuário.
Importante
Método mongosh
Esta página documenta um método.
mongoshEsta não é a documentação para comandos de banco de dados ou drivers específicos de idioma, 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 utiliza a seguinte
db.grantPrivilegesToRole()sintaxe:db.grantPrivilegesToRole( "< rolename >", [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], { < writeConcern > } ) O método utiliza os seguintes
db.grantPrivilegesToRole()argumentos:ParâmetroTipoDescriçãorolenamestring
O nome da role à qual conceder privilégios.
privilegesarray
Os privilégios para adicionar à role. Para saber o formato de um privilégio, consulte
privileges.writeConcerndocumento
Opcional. O nível da write concern para a operação. Consulte Especificação de write concern.
O método pode conceder um ou mais privilégios.
db.grantPrivilegesToRole()Cada<privilege>tem a seguinte sintaxe:{ resource: { <resource> }, actions: [ "<action>", ... ] }
Compatibilidade
Esse método está disponível em implantações hospedadas nos seguintes ambientes:
Importante
Este comando não é aceito em clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, 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 executar em um conjunto de réplicas, db.grantPrivilegesToRole() o será executado usando "majority" o preocupação de gravação de 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.
Privilégios
Ao especificar a array privileges, você pode especificar privilégios a serem aplicados a várias collections em um banco de dados ou a um banco de dados inteiro.
A seguinte sintaxe especifica privilégios em múltiplas coleções no banco de dados do products.
privileges: [ { resource: { db: 'products', collection: 'coll1' }, actions: [ 'bypassDocumentValidation' ] }, { resource: { db: 'products', collection: 'coll2' }, actions: [ 'bypassDocumentValidation' ] } ]
A seguinte sintaxe especifica privilégios em todas as collections no banco de dados products.
privileges: [ { resource: { db: 'products', collection: '' }, actions: [ 'bypassDocumentValidation' ] } ]
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 concede dois privilégios adicionais para db.grantPrivilegesToRole() a inventoryCntrl01 role, que existe no products banco de dados. 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.