sql >> Base de Datos >  >> NoSQL >> MongoDB

Error de autenticación al intentar guardar en mongodb

¿Dónde, es decir, en qué base de datos creó el usuario? Por lo general, los usuarios se crean en la base de datos admin . Cuando se conecta a un MongoDB, siempre debe especificar la base de datos de autenticación y la base de datos que desea usar.

Los valores predeterminados son un poco confusos y no son realmente consistentes, consulte esta tabla para obtener una descripción general:

+----------------------------------------------------------------------------------------+
|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 desea utilizar la cadena de conexión en formato URI, correspondería a estos:

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

Supongo que creaste el usuario en admin base de datos pero como no especificas la base de datos de autenticación mientras te conectas, Mongo lo establece por defecto en mydatabase donde falla, porque el usuario no existe en la base de datos mydatabase .