Gdzie tj. w jakiej bazie utworzyłeś użytkownika? Zazwyczaj użytkownicy są tworzeni w bazie danych admin
. Kiedy łączysz się z MongoDB, powinieneś zawsze określić bazę danych uwierzytelniania i bazę danych, której chcesz używać.
Wartości domyślne są nieco mylące i niezbyt spójne, zobacz tę tabelę, aby uzyskać przegląd:
+----------------------------------------------------------------------------------------+
|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 |
+----------------------------------------------------------------------------------------+
Jeśli chcesz używać parametrów połączenia w formacie URI, odpowiadałyby one następującym:
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname
Chyba utworzyłeś użytkownika w admin
bazy danych, ale ponieważ nie określisz authenticationDatabase podczas łączenia, Mongo domyślnie ustawia ją na mydatabase
gdzie to się nie powiedzie, ponieważ użytkownik nie istnieje w bazie danych mydatabase
.