Connexion d'une application externe
Vos applications et pilotes utilisent des chaînes de connexion pour établir une connexion à IBM Cloud® Databases for MongoDB. Chaque déploiement contient des chaînes de connexion spécifiques pour des pilotes et des applications. Les chaînes de connexion sont affichées dans le panneau Endpoints de la vue d'ensemble de votre déploiement et peuvent également être récupérées à partir du plug-in CLI Cloud Databases et de l'API Cloud Databases.
Les chaînes de connexion peuvent être utilisées par tous les utilisateurs que vous créez dans votre déploiement. Bien que vous puissiez utiliser le nom d'administrateur pour toutes vos connexions et applications, il peut être préférable de créer des utilisateurs à utiliser spécifiquement pour vos applications. Pour plus d'informations, voir L'obtention des chaînes de connexion.
Lors de la connexion d'une application externe, utilisez uniquement les pilotes pris en charge par MongoDB ou MongoDB's Bibliothèques soutenues par la communauté en vedette. Cloud Databases ne prend en charge aucun pilote qui n'est pas pris en charge par MongoDB.
Utilisation des informations de connexion
Toutes les informations dont un pilote a besoin pour établir une connexion avec votre déploiement se trouvent dans la section "MongoDB" d'un justificatif d'identité créé sur la page Certificats d'identité du service. Le tableau ci-après est fourni à titre de référence.
| Nom de zone | Index | Description |
|---|---|---|
Type |
Type de connexion - Pour MongoDB, il s'agit de "URI". | |
Scheme |
Schéma pour un URI. Pour MongoDB, il s'agit de "mongodb". | |
Path |
Chemin pour un URI - Pour MongoDB, il s'agit du nom de la base de données. Lors de la mise à disposition d'une instance MongoDB pour la première fois, la base de données par défaut auquel l'utilisateur se connecte est admin. |
|
Authentication |
Username |
Nom d'utilisateur que vous utilisez pour vous connecter. |
Authentication |
Password |
Mot de passe pour l'utilisateur - peut s'afficher sous la forme $PASSWORD |
Authentication |
Method |
Méthode d'authentification. L'authentification "directe" est gérée par le pilote. Mongo 3.6 utilise SCRAM SHA 1, tandis que Mongo 4.2 utilise SHA 256. |
Hosts |
0... |
Nom d'hôte et port auxquels se connecter. |
Composed |
0... |
URI combinant le schéma, l'authentification, l'hôte, le chemin et le nom du jeu de répliques. |
Certificate |
Name |
Nom attribué au certificat propriétaire du service pour le déploiement de la base de données |
Certificate |
Base64 | Version codée en base64 du certificat. |
0...indique qu'il peut y avoir une ou plusieurs de ces entrées dans un tableau.
De nombreux pilotes MongoDB sont en mesure de se connecter à votre déploiement lorsqu'ils reçoivent la chaîne de connexion formatée URI qui se trouve dans le champ "composed" des informations de connexion. Cloud Databases fournit une instance hautement disponible de MongoDB, veillez donc à inclure tous les membres dans la chaîne de connexion. Exemple :
mongodb://admin:$PASSWORD@d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187-0.databases.appdomain.cloud:30484,d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187-1.databases.appdomain.cloud:30484,d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187-2.databases.appdomain.cloud:30484/<database name>?authSource=admin&replicaSet=replset
Le paramètre de requête replicaSet contient le nom du jeu de répliques de votre déploiement. Il s'agit probablement de replset. Il doit être transmis séparément pour certains pilotes et certaines applications.
L'exemple suivant utilise les informations de votre chaîne de connexion et le pilote Java MongoDB pour établir la connexion à votre base de données.
public class MongodbConnect {
private static Logger log = LoggerFactory.getLogger(LoggerFactory.class);
public static void main(String[] args) {
System.setProperty("javax.net.ssl.trustStore", "path/to/keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "store_password");
// make sure you append ssl=true to the connection URI
final String mongoURI = "mongodb://user:password@host:port,host:port/?authSource=admin&replicaSet=replset&ssl=true";
MongoClient mongoClient = MongoClients.create(mongoURI);
boolean testDB = false;
// this loop will continue attempting to connect to the database until the admin database is found
while (!testDB) {
try {
// check if you can connect to the database by checking for
// the presence of the admin database. If the admin databases isn't found
// then you're not connected.
MongoIterable<String> databases = mongoClient.listDatabaseNames();
for (String name: databases) {
if (name.contains("admin")) {
System.out.println("admin found...");
testDB = true;
}
}
} catch (Exception e) {
log.info(e.getMessage());
}
}
// close connection
mongoClient.close();
}
}
L'exemple suivant utilise les informations de votre chaîne de connexion et le pilote Python pymongo pour établir la connexion à votre base de données. Il s'agit d'un exemple de connexion simple, sans traitement d'erreurs ni logique de relance, qui peut ne pas convenir à un environnement de production.
import pymongo
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure
client = MongoClient(
"mongodb://admin:$PASSWORD@host.databases.appdomain.cloud:30484/<database name>?authSource=adminreplicaSet=replset",
ssl=True,
ssl_ca_certs="/path/to/cert/ca-certificate.crt"
)
try:
db_list = client.list_database_names()
print("List of databases:")
print(db_list)
except ConnectionFailure as err:
print("Unable to connect to database")
Cet exemple final utilise le pilote MongoDB Node.js
const MongoClient = require("mongodb").MongoClient;
let connectionString = "mongodb://<username>:<password>@<host>:<port>,<host>:<port>/<database>?authSource=admin&replicaSet=replset";
let options = {
tls: true,
tlsCAFile: `/path/to/cert`,
useUnifiedTopology: true
};
// connects to a MongoDB database
MongoClient.connect(connectionString, options, function (err, db) {
if (err) {
console.log(err);
} else {
// lists the databases that exist in the deployment
db.db('example').admin().listDatabases(function(err, dbs) {
console.log(dbs.databases);
db.close();
});
}
});
Prise en charge du certificat TLS du pilote et du certificat propriétaire du service
TLS 1.2 est activé pour toutes les connexions à Databases for MongoDB, par conséquent, le pilote que vous utilisez pour la connexion doit pouvoir prendre en charge le chiffrement.
Les suites de chiffrement suivantes sont prises en charge par Databases for MongoDB Enterprise Edition:
- ECDHE-ECDSA-AES128-GCM-SHA256
- ECDHE-RSA-AES128-GCM-SHA256
- ECDHE-ECDSA-AES256-GCM-SHA384
- ECDHE-RSA-AES256-GCM-SHA384
- ECDHE-ECDSA-CHACHA20-POLY1305
- ECDHE-RSA-CHACHA20-POLY1305
- DHE-RSA-AES128-GCM-SHA256
- DHE-RSA-AES256-GCM-SHA384
Votre déploiement est également accompagné d'un certificat propriétaire de service afin que le pilote puisse vérifier le serveur lors de la connexion.
Pour plus d'informations, voir la foire aux questions sur les certificatsCloud Databases.
Utilisation du certificat de propriété du service
- Copiez les informations de certificat à partir du panneau Noeuds finaux ou de la zone Base64 des informations de connexion.
- Si besoin, décodez la chaîne Base64 en texte.
- Sauvegardez le certificat dans un fichier. (Vous pouvez utiliser le nom qui est fourni ou votre propre nom de fichier). *
- Indiquez le chemin d'accès au certificat au pilote ou au client.
*Pour MacOS, vérifiez que le certificat a été importé dans votre magasin de clés de confiance et cochez trust always pour le certificat.
Prise en charge du plug-in CLI pour le certificat propriétaire du service
Vous pouvez afficher le certificat décodé pour votre déploiement avec le plug-in d'interface de ligne de commande à l'aide de la commande ibmcloud cdb deployment-cacert "your-service-name". Elle décode la chaîne base64
en texte. Copiez et sauvegardez le résultat de la commande dans un fichier et indiquez le chemin du fichier au pilote.
Autres pilotes de langage
MongoDB possède un large éventail de pilotes de langage. Le tableau en répertorie quelques-uns des plus courants. Si vous recherchez d'autres langues, essayez la liste de pilotes MongoDB.org.