Outra possibilidade: ao criar o usuário, você pode estar acidentalmente use
acessando um banco de dados diferente admin
ou diferente daquele que deseja. Você precisa definir --authenticationDatabase
o banco de dados no qual o usuário foi realmente criado.
mongodb
parece colocá-lo no test
banco de dados por padrão quando você abre o shell, então você precisa escrever --authenticationDatabase test
mais do que --authenticationDatabase admin
se você acidentalmente foram use
ing test
quando você executoudb.createUser(...)
.
Supondo que você tenha acesso à máquina que está executando a instância mongodb, y poderia desativar a autorização /etc/mongod.conf
(comentário authorization
que está aninhado na segurança) e, em seguida, reiniciar o servidor e executar:
mongo
show users
E você pode obter algo assim:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Observe que o db
valor é igual test
. Isso porque, quando criei o usuário, não executei primeiro use admin
ou use desiredDatabaseName
. Assim, você pode excluir o usuário com db.dropUser("myusername")
e, em seguida, criar outro usuário no banco de dados desejado, como:
use desiredDatabaseName
db.createUser(...)
Espero que ajude alguém que estava na minha posição como um novato com essas coisas.