Un'altra possibilità: quando hai creato l'utente, potresti aver accidentalmente useinserito un database diverso admino diverso da quello che volevi. È necessario impostare --authenticationDatabaseil database in cui l'utente è stato effettivamente creato.
mongodbsembra mettere nel testdatabase di default quando si apre la shell, così avresti bisogno di scrivere --authenticationDatabase testpiuttosto che --authenticationDatabase adminse accidentalmente erano useIng testdurante l'esecuzione db.createUser(...).
Supponendo che tu abbia accesso alla macchina su cui è in esecuzione l'istanza mongodb, potresti disabilitare l'autorizzazione in /etc/mongod.conf(commentare authorizationche è annidato sotto sicurezza), quindi riavviare il server, quindi eseguire:
mongo
show users
E potresti ottenere qualcosa del genere:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Notare che il dbvalore è uguale a test. Questo perché quando ho creato l'utente, non ho eseguito prima use admino use desiredDatabaseName. Quindi puoi eliminare l'utente con db.dropUser("myusername")e quindi creare un altro utente nel database desiderato in questo modo:
use desiredDatabaseName
db.createUser(...)
Spero che questo aiuti qualcuno che era nella mia posizione di noob con questa roba.