MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Falha de autenticação ao tentar salvar no mongodb


Onde, ou seja, em qual banco de dados você criou o usuário? Normalmente os usuários são criados no banco de dados admin . Quando você se conecta a um MongoDB, deve sempre especificar o banco de dados de autenticação e o banco de dados que deseja usar.

Os padrões são um pouco confusos e não muito consistentes, veja esta tabela para obter uma visão geral:
+----------------------------------------------------------------------------------------+
|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 você gosta de usar a string de conexão no formato URI, ela corresponderia a estas:
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname

Acho que você criou o usuário em admin database, mas como você não especifica authenticationDatabase durante a conexão, o Mongo o padroniza para mydatabase onde falha, porque o usuário não existe no banco de dados mydatabase .