MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Authentifizierungsfehler beim Versuch, in Mongodb zu speichern

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 .