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

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

[ Hits: 10.874 ]

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

Cliente Google Authenticator para Linux (extensão Chrome)

Agendando execução de scripts PHP

VirtualBox no Debian 10 Buster? Virtual Machine Manager

Como descobrir quantos acessos determinado website possui

Gnome 2.2 para Debian

Leitura recomendada

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

Backup do MongoDB diretamente para o Amazon S3 com o s3cmd

MongoDB Community Edition 4.2 no Debian 10 Buster

Busca Reversa no Mongo Shell

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