MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Autenticazione fallita durante il tentativo di salvataggio su mongodb

Dove, cioè in quale database hai creato l'utente? In genere gli utenti vengono creati nel database admin . Quando ti connetti a un MongoDB, dovresti sempre specificare il database di autenticazione e il database che desideri utilizzare.

Le impostazioni predefinite sono un po' confuse e non molto coerenti, vedere questa tabella per avere una panoramica:

+----------------------------------------------------------------------------------------+
|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   |
+----------------------------------------------------------------------------------------+

Se desideri utilizzare la stringa di connessione in formato URI, corrisponderebbe a questi:

mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname

Immagino che tu abbia creato l'utente in admin database ma poiché non specifichi l'autenticazioneDatabase durante la connessione, Mongo lo imposta per impostazione predefinita su mydatabase dove fallisce, perché l'utente non esiste nel database mydatabase .