Wo bzw. in welcher Datenbank haben Sie den Benutzer angelegt? Normalerweise werden Benutzer in der Datenbank admin
erstellt . Wenn Sie sich mit einer MongoDB verbinden, sollten Sie immer die Authentifizierungsdatenbank und die Datenbank angeben, die Sie verwenden möchten.
Die Voreinstellungen sind etwas verwirrend und nicht wirklich konsistent, sehen Sie sich diese Tabelle an, um sich einen Überblick zu verschaffen:
+----------------------------------------------------------------------------------------+
|Connection string | Authentication | Current |
| | database | database |
+----------------------------------------------------------------------------------------+
|mongo -u <...> -p <...> --authenticationDatabase admin myDB | admin | myDB |
|mongo -u <...> -p <...> myDB | myDB | myDB |
|mongo -u <...> -p <...> --authenticationDatabase admin | admin | test |
|mongo -u <...> -p <...> localhost:27017 | test | test |
|mongo -u <...> -p <...> --host localhost:27017 | admin | test |
|mongo -u <...> -p <...> | admin | test |
+----------------------------------------------------------------------------------------+
Wenn Sie die Verbindungszeichenfolge im URI-Format verwenden möchten, würde sie diesen entsprechen:
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname
Ich vermute, Sie haben den Benutzer in admin
erstellt database, aber da Sie während der Verbindung keine authenticationDatabase angeben, verwendet Mongo standardmäßig mydatabase
wo es fehlschlägt, weil der Benutzer nicht in der Datenbank mydatabase
existiert .