Eine andere Möglichkeit: Als Sie den Benutzer erstellt haben, haben Sie möglicherweise versehentlich use
eine admin
andere als die gewünschte Datenbank erstellt . Sie müssen --authenticationDatabase
die Datenbank festlegen , unter der der Benutzer tatsächlich erstellt wurde.
mongodb
scheint Sie test
beim Öffnen der Shell standardmäßig in die Datenbank aufzunehmen, sodass Sie schreiben müssen, --authenticationDatabase test
anstatt --authenticationDatabase admin
versehentlich zu use
laufen, test
als 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 authorization
Sicherheitsgrü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 db
Wert gleich ist test
. Das liegt daran, dass ich beim Erstellen des Benutzers nicht zuerst use admin
oder 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.