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

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

[ Hits: 10.882 ]

Blog: https://mestrefabio.com

 


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

Desenhando diagramas UML no Linux

Como recompilar um vídeo/áudio aumentando ou diminuindo seu volume original

Permitir mudança de senha via SSH (e só!)

Resolvendo flash sem som no Firefox

Agendando execução de scripts PHP

Leitura recomendada

Busca Reversa no Mongo Shell

MongoDB Community Edition 4.2 no Debian 10 Buster

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

Instalar MongoDB 4.4 no Debian 10 Buster

Backup do MongoDB diretamente para o Amazon S3 com o s3cmd

  

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