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.

informazioni sulla connessione mongodb/URI
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

  1. Copiare le informazioni sul certificato dal pannello Endpoint o dal campo Base64 delle informazioni di connessione.
  2. Se necessario, decodificare la stringa Base64 in testo.
  3. Salvare il certificato in un file. (È possibile utilizzare il nome fornito o il proprio nome file). *
  4. 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.