Eine andere Möglichkeit: Als Sie den Benutzer erstellt haben, haben Sie möglicherweise versehentlich useeine adminandere als die gewünschte Datenbank erstellt . Sie müssen --authenticationDatabasedie Datenbank festlegen , unter der der Benutzer tatsächlich erstellt wurde.
mongodbscheint Sie testbeim Öffnen der Shell standardmäßig in die Datenbank aufzunehmen, sodass Sie schreiben müssen, --authenticationDatabase testanstatt --authenticationDatabase adminversehentlich zu uselaufen, testals Sie ausgeführt wurden db.createUser(...).
Angenommen, Sie haben Zugriff auf den Computer, auf dem die Mongodb-Instanz ausgeführt wird, können Sie die Autorisierung deaktivieren /etc/mongod.conf(aus authorizationSicherheitsgründen verschachtelt auskommentieren ), den Server neu starten und dann Folgendes ausführen:
mongo
show users
Und Sie könnten so etwas bekommen:
{
"_id" : "test.myusername",
"user" : "myusername",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydatabasename"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Beachten Sie, dass der dbWert gleich ist test. Das liegt daran, dass ich beim Erstellen des Benutzers nicht zuerst use adminoder ausgeführt habe use desiredDatabaseName. So können Sie den Benutzer mit löschen db.dropUser("myusername")und dann einen anderen Benutzer unter Ihrer gewünschten Datenbank erstellen, wie folgt:
use desiredDatabaseName
db.createUser(...)
Hoffentlich hilft das jemandem, der in meiner Position als Noob war, mit diesem Zeug.