MongoDB - Erro "not authorized ... to execute command" [Resolvido]

Publicado por Fábio Berbert de Paula em 27/08/2020

[ Hits: 11.742 ]

Blog: https://fabio.automatizando.dev

 


MongoDB - Erro "not authorized ... to execute command" [Resolvido]



Essa dica é meio que uma continuação da minha dica anterior, onde eu demonstro como criar um usuário "admin" para o seu MongoDB: MongoDB - Habilitar autenticação por usuário (Access Control) [Dica]

Pois bem, mesmo tendo criado o usuário com as devidas roles, na hora de deletar um banco de dados eu recebia o seguinte erro:

mongo -u fabio
> use bancoTeste
> db.dropDatabase()
{
        "ok" : 0,
        "errmsg" : "not authorized on bancoTeste to execute command { dropDatabase: 1.0, writeConcern: { w: \"majority\", wtimeout: 600000.0 }, lsid: { id: UUID(\"c67641b9-94c2-4192-b8c8-9f8c93e1b755\") }, $db: \"bancoTeste\" }",
        "code" : 13,
        "codeName" : "Unauthorized"
}


Para resolver esse problema, basta acrescentar a role "root" ao usuário criado. Exemplo:

mongo -u fabio
> use admin
> db.system.users.find().pretty()
{
        ...
        "user" : "fabio",
        ...
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                },
                {
                        "role" : "readWriteAnyDatabase",
                        "db" : "admin"
                }
        ]
}


> db.grantRolesToUser('fabio', [{ role: 'root', db: 'admin' }])

Verifique as roles do usuário:

> db.system.users.find().pretty()
{
        ...
        "user" : "fabio",
        ...
        "roles" : [
                {
                        "role" : "readWriteAnyDatabase",
                        "db" : "admin"
                },
                {
                        "role" : "root",
                        "db" : "admin"
                },
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}


E agora sim, temos as devidas permissões:

> use bancoTeste
> db.dropDatabase()
{ "dropped" : "bancoTeste", "ok" : 1 }

Até a próxima!

Outras dicas deste autor

Como descobrir a velocidade de sua placa de rede via linha de comando

Erro do Lynx acessando Google: Bad Request

Python3 demorando a compilar numpy e/ou pandas [Resolvido]

Reduzindo o tamanho de arquivos PDF

Como instalar versões antigas de aplicativos no Android

Leitura recomendada

Busca Reversa no Mongo Shell

Instalar MongoDB 4.4 no Debian 10 Buster

Backup do MongoDB diretamente para o Amazon S3 com o s3cmd

MongoDB Community Edition 4.2 no Debian 10 Buster

MongoDB - adicionar um campo a todos os documentos de uma coleção

  

Comentários
[1] Comentário enviado por maurixnovatrento em 27/08/2020 - 12:23h


Boa dica.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[2] Comentário enviado por CapitainKurn em 08/07/2022 - 20:34h


Valeu! Já quebrou um galhão hoje!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts