web-dev-qa-db-fra.com

Comment spécifier la base de données d'authentification et la base de données cible séparément sur l'URI de connexion mongodb?

J'utilise cette connexion uri pour me connecter à mongodb: mongodb://user:password@localhost/admin. Il utilisera admin comme authentification de bot et base de données cible. Comment puis-je utiliser l'URI pour utiliser admin comme authentification mais me permettre de me connecter à une autre base de données? Veuillez voir la commande ci-dessous à titre d'exemple:

mongo --Host localhost -u user -p password --authentication admin test

la commande ci-dessus utilisera admin comme base de données d'authentification, mais se connectera à la base de données test. comment puis-je faire la même chose sur uri?

13
Joey Yi Zhao

Oui .. facilement!

mongo "mongodb://test:testpwd@localhost/test?authSource=admin"
MongoDB Shell version v3.4.6
connecting to: mongodb://test:testpwd@localhost/test?authSource=admin
MongoDB server version: 3.4.6
MongoDB> db
test
MongoDB> 

Vous mettez votre base de données de destination à la fin de la chaîne "de base" et ajoutez la base de données d'authentification au paramètre authSource

26
JJussi

Réf:

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options

Vous devrez utiliser le format ci-dessous et vous n'avez pas besoin d'utiliser la base de données d'administration.

mongodb: // user: password @ localhost/test? authSource = admin

/ database Facultatif. Nom de la base de données à authentifier si la chaîne de connexion inclut des informations d'authentification sous la forme d'un nom d'utilisateur: mot de passe @. Si/database n'est pas spécifié et que la chaîne de connexion inclut des informations d'identification, le pilote s'authentifiera auprès de la base de données d'administration.

Assurez-vous d'avoir un utilisateur dans la base de données test. Voir la section 6 de ce document.

Activer l'authentification

Créez des utilisateurs supplémentaires selon vos besoins pour votre déploiement.

La base de données dans laquelle vous créez l'utilisateur (dans cet exemple, test) est la base de données d'authentification de cet utilisateur. Bien que l'utilisateur s'authentifie auprès de cette base de données, l'utilisateur peut avoir des rôles dans d'autres bases de données; c'est-à-dire que la base de données d'authentification de l'utilisateur ne limite pas les privilèges de l'utilisateur.

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)
4
SqlWorldWide