Kde, tedy v jaké databázi jste uživatele vytvořili? Uživatelé se obvykle vytvářejí v databázi admin
. Když se připojujete k MongoDB, měli byste vždy zadat ověřovací databázi a databázi, kterou chcete používat.
Výchozí hodnoty jsou trochu matoucí a nejsou ve skutečnosti konzistentní. Přehled naleznete v této tabulce:
+----------------------------------------------------------------------------------------+
|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 |
+----------------------------------------------------------------------------------------+
Pokud chcete použít řetězec připojení ve formátu URI, odpovídal by těmto:
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname
Předpokládám, že jste uživatele vytvořili v admin
databáze, ale protože při připojování nezadáte authenticationDatabase, Mongo ji nastaví jako výchozí mydatabase
kde selže, protože uživatel v databázi mydatabase
neexistuje .