Dove, cioè in quale database hai creato l'utente? In genere gli utenti vengono creati nel database admin
. Quando ti connetti a un MongoDB, dovresti sempre specificare il database di autenticazione e il database che desideri utilizzare.
Le impostazioni predefinite sono un po' confuse e non molto coerenti, vedere questa tabella per avere una panoramica:
+----------------------------------------------------------------------------------------+
|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 desideri utilizzare la stringa di connessione in formato URI, corrisponderebbe a questi:
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname
Immagino che tu abbia creato l'utente in admin
database ma poiché non specifichi l'autenticazioneDatabase durante la connessione, Mongo lo imposta per impostazione predefinita su mydatabase
dove fallisce, perché l'utente non esiste nel database mydatabase
.