Connessione a un'applicazione esterna
Le tue applicazioni e i tuoi driver utilizzano le stringhe di collegamento per effettuare una connessione a IBM Cloud® Databases for MongoDB. Ogni distribuzione dispone di stringhe di connessione specifiche per driver e applicazioni. Le stringhe di connessione sono visualizzate nel pannello Endpoint della Panoramicadella distribuzione e possono essere richiamate anche dal plug-in CLICloud Databases e dall'API Cloud Databases.
Le stringhe di connessione possono essere utilizzate da qualsiasi utente creato nella propria distribuzione. Mentre puoi utilizzare l'utente amministratore per tutte le tue connessioni e applicazioni, potrebbe essere meglio creare utenti specificamente per le tue applicazioni con cui connetterti. Per ulteriori informazioni, vedere Attribuzione delle stringhe di connessione.
Quando si collega un'applicazione esterna, utilizzare solo i driver supportati da MongoDB O MongoDB's Biblioteche supportate dalla comunità in primo piano. Cloud Databases non supporta alcun driver che non sia supportato da MongoDB.
Utilizzo delle informazioni di connessione
Tutte le informazioni di cui un driver ha bisogno per connettersi all'installazione sono contenute nella sezione "MongoDB" di una credenziale creata nella pagina Credenziali del servizio. La tabella contiene una suddivisione per riferimento.
| Nome campo | Indice | Descrizione |
|---|---|---|
Type |
Tipo di connessione - per MongoDB, è "URI" | |
Scheme |
Schema per un URI - for MongoDB, è "mongodb" | |
Path |
Percorso per un URI - for MongoDB, è il nome del database. Quando si esegue il provisioning di un'istanza MongoDB per la prima volta, il database predefinito a cui l'utente si connette è admin. |
|
Authentication |
Username |
Il nome utente utilizzato per la connessione. |
Authentication |
Password |
Una password per l'utente - potrebbe essere mostrata come $PASSWORD |
Authentication |
Method |
Come avviene l'autenticazione; l'autenticazione "diretta" è gestita dal driver. Mongo 3.6 usa SCRAM SHA 1, mentre Mongo 4.2 usa SHA 256 |
Hosts |
0... |
Un nome di host e una porta a cui connettersi |
Composed |
0... |
Un URI che combina schema, autenticazione, host, percorso e nome della serie di repliche. |
Certificate |
Name |
Il nome assegnato per il certificato proprietario del servizio per la distribuzione del database |
Certificate |
Base64 | Una versione codificata base64 del certificato. |
0...indica che in un array potrebbero essere presenti una o più di queste voci.
Molti driver MongoDB sono in grado di connettersi all'installazione quando viene fornita la stringa di connessione formattata come URI che si trova nel campo "composed" delle informazioni di connessione. Cloud Databases fornisce un'istanza altamente disponibile di MongoDB, quindi assicurarsi di includere tutti i membri nella stringa di connessione. Ad esempio:
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
Il parametro di interrogazione replicaSet contiene il nome della serie di replica per la propria distribuzione. Probabilmente si tratta di replset. Alcuni driver e applicazioni devono essere passati separatamente.
Il seguente esempio utilizza le informazioni dalla stringa di connessione e il MongoDB Java Driver per connettersi al database.
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();
}
}
Questo esempio successivo utilizza le informazioni dalla stringa di connessione e dal driver Python pymongo per connettersi al database. Questo è solo un semplice esempio di connessione, senza la gestione degli errori o la logica dei tentativi e potrebbe non essere adatto per la produzione.
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")
Questo ultimo esempio utilizza il driver 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();
});
}
});
Driver TLS e supporto per i certificati proprietari del servizio
Tutte le connessioni a Databases for MongoDB sono abilitate per TLS 1.2, quindi il driver che utilizzi per la connessione deve essere in grado di supportare la crittografia.
I seguenti pacchetti di crittografia sono supportati da 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
L'installazione viene fornita anche con un certificato proprietario del servizio, in modo che il driver possa verificare il server al momento della connessione.
Per ulteriori informazioni, vedi Cloud Databases Certificates FAQ.
Utilizzo del certificato proprietario del servizio
- Copiare le informazioni sul certificato dal pannello Endpoint o dal campo Base64 delle informazioni di connessione.
- Se necessario, decodificare la stringa Base64 in testo.
- Salvare il certificato in un file. (È possibile utilizzare il nome fornito o il proprio nome file). *
- Fornire il percorso del certificato al driver o al client.
*Per MacOS, assicurati di avere il certificato importato nel tuo truststore e contrassegna il certificato come trust always.
Supporto del plug-in CLI per il certificato proprietario del servizio
Puoi visualizzare il certificato decodificato per la tua distribuzione con il plug-in CLI con il comando ibmcloud cdb deployment-cacert "your-service-name". Decodifica base64 in testo. Copiare e salvare l'output del
comando in un file e fornire il percorso del file al driver.
Altri driver di lingua
MongoDB ha una vasta gamma di driver linguistici. La tabella comprende alcuni dei più comuni. Se stai cercando altre lingue, prova MongoDB.org Driver List.