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?
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
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.
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" } ]
}
)