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

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

[ Hits: 12.028 ]

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 evitar que o CSS do teu site fique armazenado em cache

Vim - como executar uma linha do texto no terminal

Como seu Samsung Galaxy S3 pode se transformar num PC

Como usar extensões do Google Chrome no Opera

Contador de linhas em consultas SQL

Leitura recomendada

Instalar MongoDB 4.4 no Debian 10 Buster

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

Backup do MongoDB diretamente para o Amazon S3 com o s3cmd

MongoDB - Habilitar autenticação por usuário (Access Control)

MongoDB Community Edition 4.2 no Debian 10 Buster

  

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