sql >> Database teknologi >  >> NoSQL >> MongoDB

Godkendelsesfejl under forsøg på at gemme til mongodb

Hvor, dvs. i hvilken database oprettede du brugeren? Typisk oprettes brugere i databasen admin . Når du opretter forbindelse til en MongoDB, skal du altid angive godkendelsesdatabasen og den database, du kan lide at bruge.

Standardindstillingerne er lidt forvirrende og ikke rigtig konsistente, se denne tabel for at få et overblik:

+----------------------------------------------------------------------------------------+ |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 | +----------------------------------------------------------------------------------------+

Hvis du kan lide at bruge forbindelsesstrengen i URI-format, svarer den til disse:

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

Jeg gætter på, at du har oprettet brugeren i admin database, men da du ikke angiver autentificeringsDatabase, mens du opretter forbindelse, indstiller Mongo den som standard til mydatabase hvor det mislykkes, fordi brugeren ikke eksisterer i databasen mydatabase .




  1. MongoDB $allElementsTrue

  2. MongoDB $round vs $trunc:Hvad er forskellen?

  3. Apache HBase + Apache Hadoop + Xceivers

  4. Node.js, (Hej)Redis og multikommandoen