Verbindung mit einer externen Anwendung herstellen

Ihre Anwendungen und Treiber stellen die Verbindung zu IBM Cloud® Databases for MongoDB mithilfe von Verbindungszeichenfolgen her. Alle Bereitstellungen verfügen über spezielle Verbindungszeichenfolgen für Treiber und Anwendungen. Die Verbindungszeichenfolgen werden im Bereich Endpunkte in der Übersicht Ihrer Bereitstellung angezeigt und können auch über das Cloud Databases CLI-Plug-in und die Cloud Databases API abgerufen werden.

Die Verbindungszeichenfolgen können von jedem der Benutzer verwendet werden, die Sie in Ihrer Einrichtung erstellen. Sie können zwar den Benutzer mit Administratorberechtigung für alle Verbindungen und Anwendungen verwenden, es kann jedoch sinnvoller sein, Benutzer speziell für die Anwendungen zu erstellen, zu denen diese eine Verbindung herstellen möchten. Weitere Informationen finden Sie unter Erhalten von Verbindungsstrings.

Verwenden Sie beim Anschluss einer externen Anwendung nur Treiber, die unterstützt werden von MongoDB oder MongoDB's Ausgewählte von der Community unterstützte Bibliotheken. Cloud Databases unterstützt keine Treiber, die nicht unterstützt werden von MongoDB.

Verbindungsinformationen verwenden

Alle Informationen, die ein Treiber benötigt, um eine Verbindung zu Ihrer Bereitstellung herzustellen, befinden sich im Abschnitt "MongoDB" eines Berechtigungsnachweises, der auf der Seite Dienstberechtigungsnachweise erstellt wurde. Die Tabelle enthält eine Aufgliederung zu Referenzzwecken.

mongodb/URI-Verbindungsinformationen
Feldname Index Beschreibung
Type Typ der Verbindung - bei MongoDB 'URI'.
Scheme Schema für eine URI - bei MongoDB 'mongodb'.
Path Pfad für eine URI - bei MongoDB der Datenbankname. Wenn eine MongoDB-Instanz zum ersten Mal bereitgestellt wird, ist die Standarddatenbank, zu der der Benutzer eine Verbindung herstellen kann, admin.
Authentication Username Der Benutzername, den Sie zum Herstellen einer Verbindung verwenden
Authentication Password Ein Kennwort für den Benutzer; die Anzeige erfolgt gegebenenfalls in Form von $PASSWORD
Authentication Method Gibt an, wie die Authentifizierung erfolgt; die 'direkte' Authentifizierung wird vom Treiber abgewickelt Bei Mongo 3.6 wird SCRAM-SHA-1 verwendet, während bei Mongo 4.2 SHA-256 zum Einsatz kommt.
Hosts 0... Ein Hostname und ein Port zur Herstellung einer Verbindung
Composed 0... Eine URI, die sich aus dem Schema (Scheme), der Authentifizierungsmethode (Authentication), dem Hostnamen (Host), dem Pfad (Path) und dem Namen der Replikatgruppe (Replica Set) zusammensetzt.
Certificate Name Der zugewiesene Name für das diensteigene Zertifikat für die Datenbankbereitstellung
Certificate Base64 Eine Version des Zertifikats in Base64-Codierung
  • 0... Gibt an, dass es möglicherweise weitere derartige Einträge in einem Array gibt.

Viele ' MongoDB-Treiber sind in der Lage, eine Verbindung zu Ihrem Einsatz herzustellen, wenn sie die URI-formatierte Verbindungszeichenfolge erhalten, die im Feld "composed" der Verbindungsinformationen zu finden ist. Cloud Databases stellt eine hochverfügbare Instanz von " MongoDB, bereit. Stellen Sie also sicher, dass Sie alle Mitglieder in den Verbindungsstring aufnehmen. Zum Beispiel:

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

Der Abfrageparameter replicaSet enthält den Replikatgruppennamen für Ihre Bereitstellung. In der Regel handelt es sich dabei um replset. An einige Treiber und Anwendungen muss der Parameter separat übergeben werden.

Im folgenden Beispiel werden die Informationen aus Ihrer Verbindungszeichenfolge und dem MongoDB-Java-Treiber verwendet, um eine Verbindung zu Ihrer Datenbank herzustellen.

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();

    }
}

Im nächsten Beispiel werden Informationen aus Ihrer Verbindungszeichenfolge und dem Python-Treiber Pymongo verwendet, um eine Verbindung zu Ihrer Datenbank herzustellen. Dies ist nur ein einfaches Verbindungsbeispiel ohne Fehlerbehandlung oder Wiederholungslogik, das für die Produktion möglicherweise nicht geeignet ist.

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")

In diesem letzten Beispiel wird der MongoDB Node.js-Treiber verwendet.

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();
        });
    }
});

Unterstützung für Treiber-TLS und diensteigene Zertifikate

Bei allen Verbindungen zu Databases for MongoDB wird TLS 1.2 unterstützt. Der Treiber, den Sie für die Verbindung verwenden, muss deshalb die Verschlüsselung von Daten unterstützen können.

Die folgenden Cipher Suites werden von Databases for MongoDB Enterprise Editionunterstützt:

  • 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

Ihre Bereitstellung umfasst auch ein diensteigenes Zertifikat, damit der Treiber den Server bei der Verbindung verifizieren kann.

Weitere Informationen finden Sie unter Cloud Databases Zertifikate-Häufig gestellte Fragen.

Verwendung des diensteigenen Zertifikats

  1. Kopieren Sie die Zertifikatsinformationen aus der Anzeige Endpunkte oder aus dem Feld Base64 der Verbindungsinformationen.
  2. Decodieren Sie bei Bedarf die Base64-Zeichenfolge in Text.
  3. Speichern Sie das Zertifikat in einer Datei. (Sie können den angegebenen Namen oder Ihren eigenen Dateinamen verwenden.) *
  4. Geben Sie gegenüber dem Treiber oder Client den Pfad zum Zertifikat an.

*Stellen Sie bei macOS sicher, dass das Zertifikat in Ihren Truststore importiert wurde, und markieren Sie das Zertifikat als vertrauenswürdig (trust always).

CLI-Plugin-Unterstützung für das diensteigene Zertifikat

Sie können das decodierte Zertifikat für Ihre Bereitstellung mit dem CLI-Plugin mit dem Befehl ibmcloud cdb deployment-cacert "your-service-name" anzeigen. Dadurch werden in Base64 codierte Zeichenfolgen in Text decodiert. Kopieren Sie die Ausgabe des Befehls, speichern Sie sie in einer Datei und geben Sie den Pfad der Datei für den Treiber an.

Treiber für andere Sprachen

MongoDB verfügt über Treiber für eine Vielzahl von Sprachen. Die Tabelle deckt die gängigsten Sprachen ab. Wenn Sie nach weiteren Sprachen suchen, besuchen Sie die MongoDB.org Driver List.