Outra possibilidade: ao criar o usuário, você pode estar acidentalmente useacessando um banco de dados diferente adminou diferente daquele que deseja. Você precisa definir --authenticationDatabaseo banco de dados no qual o usuário foi realmente criado.
mongodbparece colocá-lo no testbanco de dados por padrão quando você abre o shell, então você precisa escrever --authenticationDatabase testmais do que --authenticationDatabase adminse você acidentalmente foram useing testquando 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 authorizationque 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 dbvalor é igual test. Isso porque, quando criei o usuário, não executei primeiro use adminou 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.