Pular para o conteúdo

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

Dica publicada em Banco de Dados / MongoDB
Fábio Berbert de Paula fabio
Hits: 12.573 Categoria: Banco de Dados Subcategoria: MongoDB
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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!

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Compartilhando arquivos entre computadores com Woof

Convertendo arquivos MP3 para WAV e vice-versa

Checar a conexão com a Internet em Python

Configurando um VirtualHost no Apache

Vim - como executar uma linha do texto no terminal

Instalar MongoDB 4.4 no Debian 10 Buster

Busca Reversa no Mongo Shell

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

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

Backup do MongoDB diretamente para o Amazon S3 com o s3cmd

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

Valeu! Já quebrou um galhão hoje!

Contribuir com comentário

Entre na sua conta para comentar.