MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Échec de l'authentification lors de la tentative d'enregistrement sur mongodb

Où, c'est-à-dire dans quelle base de données avez-vous créé l'utilisateur ? Généralement, les utilisateurs sont créés dans la base de données admin . Lorsque vous vous connectez à une MongoDB, vous devez toujours spécifier la base de données d'authentification et la base de données que vous souhaitez utiliser.

Les valeurs par défaut sont un peu déroutantes et pas vraiment cohérentes, consultez ce tableau pour avoir un aperçu :

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

Si vous souhaitez utiliser la chaîne de connexion au format URI, cela correspondrait à ceux-ci :

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

Je suppose que vous avez créé l'utilisateur dans admin database mais comme vous ne spécifiez pas authenticationDatabase lors de la connexion, Mongo la définit par défaut sur mydatabase où il échoue, car l'utilisateur n'existe pas dans la base de données mydatabase .