MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Connection String in MongoDB (mit Beispielen)

Damit Apps eine Verbindung zu einem Datenbankserver herstellen können, müssen sie eine Verbindungszeichenfolge verwenden, bei der es sich um einen Ausdruck handelt, der alle erforderlichen Parameter enthält. Verbindungszeichenfolgen stellen die Serverinstanz, den Datenbanknamen, Authentifizierungsdetails und andere Parameter für die Interaktion mit dem Datenbankserver bereit.

Formate für Verbindungszeichenfolgen

Jede der angegebenen Methoden richtet eine MongoDB-Verbindungszeichenfolge ein. Das DNS Seed List Connection Format oder das Standard Connection String Format.

Das Standardformat zum Verbinden von Strings

Es gibt drei Grundtypen von MongoDB-Bereitstellungen:Standalone, Replikatsatz und Sharding-Cluster, die alle hier beschrieben werden.

Dies ist die typische Art, URIs zu verbinden.

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

Beispiele:

Eigenständig
mongodb://mongodb0.example.com:27017
Eigenständig, das die Zugriffskontrolle erzwingt:
mongodb://myDBReader:D1fficultP%[email protected]:27017/?authSource=admin
Replik-Set
mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
Replikatsatz, der die Zugriffskontrolle erzwingt:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
Sharded-Cluster
mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017
Sharded-Cluster, der die Zugriffskontrolle erzwingt:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

Komponenten einer Verbindungszeichenfolge

Bestandteile der Standard-URI-Verbindungszeichenfolge:

  1. mongodb:// – Ein notwendiges Präfix, das eine Standardverbindungszeichenfolge angibt.
  2. Benutzername:Passwort@ – Authentifizierungsdaten sind optional. Wenn die authSource angegeben ist, versucht der Client, den Benutzer zu authentifizieren. Ohne Angabe einer authSource verifiziert der Client den Benutzer anhand der defaultauthdb. Außerdem wird die Admin-Datenbank verwendet, wenn die defaultauthdb nicht angegeben ist.
  3. host[:port] – Der Host (und optional die Portnummer), auf dem die Mongod-Instanz ausgeführt wird (oder die Mongos-Instanz im Fall eines Sharding-Clusters). Sie können einen Hostnamen, eine IP-Adresse oder einen Socket in einer UNIX-Domäne angeben. Geben Sie die Anzahl der für Ihre Rollout-Topologie erforderlichen Hosts an:
    Geben Sie im Fall einer einzelnen Mongod-Instanz den Hostnamen der Mongod-Instanz an.
    Geben Sie den/die Hostnamen der angegebenen Mongod-Instanz(en) an in den Replikatsatzeinstellungen für einen Replikatsatz.
    Geben Sie den/die Hostnamen der Mongos-Instanz(en) für einen Sharding-Cluster an. Ohne Angabe einer Portnummer wird der generische Port 27017 verwendet.
  4. /defaultauthdb – Optional. Wenn die Verbindungszeichenfolge username:password@-Anmeldeinformationen enthält, aber die Option authSource nicht angegeben wird, wird die Authentifizierungsdatenbank verwendet. Der Client verwendet die Admin-Datenbank, um den Benutzer zu authentifizieren, wenn sowohl authSource als auch defaultauthdb nicht angegeben sind.
  5. ? Optional. Verbindungsspezifische Parameter werden in Name>=Wert>-Paaren in der Abfragezeichenfolge angegeben. Die Liste der verfügbaren Auswahlmöglichkeiten finden Sie im Abschnitt Connection String Options. Der Schrägstrich (/) muss zwischen dem Host und dem Fragezeichen (?) stehen, um die Optionszeichenfolge zu beginnen, wenn keine Datenbank in der Verbindungszeichenfolge angegeben ist.

Verbindungsformat für die DNS-Seed-Liste

Es gibt auch eine DNS-konstruierte Startliste für MongoDB-Verbindungen. Die Verwendung von DNS zum Erstellen der Liste der zugänglichen Server bietet mehr Bereitstellungsflexibilität und die Möglichkeit, Server in Zyklen zu wechseln, ohne Clients neu zu konfigurieren.

Verwenden Sie das Präfix mongodb+srv anstelle des regulären Präfixes der MongoDB-Verbindungszeichenfolge, um die DNS-Seed-Liste zu verwenden. Um dem Benutzer mitzuteilen, dass der folgende Hostname ein DNS-SRV-Eintrag ist, verwenden Sie das Präfix +srv. Anschließend fragt der Mongosh oder Treiber das Domain Name System (DNS) ab, um herauszufinden, welche Hosts die Mongod-Instanzen ausführen.

Hinweis: Die tls- (oder die entsprechende ssl-) Option wird auf „true“ gesetzt, wenn die Verbindungszeichenfolgenvariable +srv verwendet wird. Indem Sie die tls-Option in der Abfragezeichenfolge explizit auf „false“ setzen, können Sie dieses Verhalten außer Kraft setzen und stattdessen tls=false verwenden.

Verbindungszeichenfolgen für DNS-Seed-Listen sehen häufig wie im folgenden Beispiel aus:

mongodb+srv://server.example.com/

Die DNS-Einrichtung kann wie folgt aussehen:

Record                            TTL   Class    Priority Weight Port  Target

_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27317 mongodb1.example.com.

_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27017 mongodb2.example.com.

Durch das Herstellen einer Verbindung mit Mitgliedern der Seed-Liste erhalten Clients Zugriff auf ein Verzeichnis anderer Mitglieder des Replikatsatzes, um eine Verbindung herzustellen. Der Host kann eine Serverliste erzeugen, die sich von der Seed-Liste unterscheidet, da Clients üblicherweise DNS-Aliase in ihren Seed-Listen verwenden. Auf Replica-Set-Mitglieder kann nur über ihre Hostnamen zugegriffen werden; Daher verwenden die Benutzer in diesem Fall die Hostnamen, die von der Replikation angegeben wurden, und nicht die in der Seed-Liste angegebenen.

Hinweis: Die vom angegebenen Hostnamen bereitgestellten SRV-Einträge müssen dieselbe übergeordnete Domäne (example.com) wie der Hostname selbst haben. Sie können keine Verbindung herstellen, wenn die übergeordneten Domänen und Hostnamen nicht übereinstimmen.

Darüber hinaus können Sie mit DNS-Seed-List-Verbindungszeichenfolgen Parameter als Teil einer URL auf die gleiche Weise bereitstellen wie gewöhnliche. Sie können auch einen TXT-Eintrag verwenden, um die folgenden Einstellungen anzugeben, wenn Sie eine DNS-Seed-List-Verbindungszeichenfolge verwenden:

authSource
replicaSet

Für jede Mongod-Instanz kann nur ein TXT-Eintrag angegeben werden. Der Client gibt einen Fehler zurück, wenn der DNS mehrere TXT-Einträge hat oder wenn der TXT-Eintrag ein anderes Attribut als replicaSet oder authSource enthält.

Der TXT-Eintrag für server.example.com würde folgendermaßen aussehen:

Record              TTL   Class    Text

server.example.com. 86400 IN TXT   "replicaSet=mySet&authSource=authDB"

Diese Verbindungszeichenfolge wird aus den DNS-SRV-Einträgen sowie den TXT-Eintragseinstellungen wie folgt generiert:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

Die Auswahlmöglichkeiten eines TXT-Eintrags können überschrieben werden, indem der Abfragezeichenfolgenparameter der URL bereitgestellt wird. Die Abfragezeichenfolge im folgenden Szenario überschreibt die Option authSource, die im TXT-Eintrag des DNS-Eintrags festgelegt ist.

mongodb+srv://server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB

Bei Verwendung der authSource-Überschreibung würde die typische Verbindungszeichenfolge wie folgt aussehen:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB

Hinweis: Wenn dem in der Verbindungszeichenfolge angegebenen Hostnamen keine DNS-Einträge zugeordnet sind, schlägt der Parameter mongodb+srv fehl. Als letzte Anmerkung:Wenn Sie die Änderung der +srv-Verbindungszeichenfolge verwenden, wird die Option zur Verwendung von TLS (oder der gleichwertigen SSL-Sicherheit) für die Verbindung auf „true“ gesetzt. Indem Sie die tls-Option in der Abfragezeichenfolge explizit auf „false“ setzen, können Sie dieses Verhalten außer Kraft setzen und stattdessen tls=false verwenden.

Erhalten Sie Ihre MongoDB-Verbindungszeichenfolge

Sie benötigen eine URI-Zeichenfolge, um eine Verbindung zu MongoDB herzustellen. Wenn Sie mit der Mongo-Shell, Compass oder den MongoDB-Treibern eine Verknüpfung zu einer MongoDB-Bereitstellung herstellen, werden Sie nach dem URI (Uniform Resource Identifier) ​​gefragt.

Es wird davon ausgegangen, dass Sie bereits die Authentifizierung in MongoDB eingerichtet und einen Benutzernamen und ein Passwort für Lese- und Schreibrechte für eine MongoDB-Datenbank generiert haben, wenn Sie die bereitgestellte URI-Zeichenfolge verwenden.

In diesem Fall können Sie den Login und das Passwort, die Sie für die readWriteAnyDatabase-Rolle erstellt haben, sowie den Administratordatenbanknamen in Ihrer Verbindungszeichenfolge verwenden, um eine Verbindung zu MongoDB herzustellen.

Optionen für die Verbindungszeichenfolge

In diesem Abschnitt werden die verschiedenen Möglichkeiten erläutert, wie Sie eine Verbindung zum Internet herstellen können.

  1. In Form eines Name=Wert-Paares stehen Verbindungsmöglichkeiten zur Verfügung.
  2. Bei Verwendung eines Treibers wird beim Optionsnamen die Groß-/Kleinschreibung nicht beachtet.
  3. Bei Verwendung von Mongosh oder der traditionellen Mongo-Shell (Version 4.2 oder höher) muss beim Optionsnamen die Groß-/Kleinschreibung nicht beachtet werden.
  4. Beim Namen der Option muss zwischen Groß- und Kleinschreibung unterschieden werden, wenn eine alte Mongo-Shell der Version 4.0 oder früher verwendet wird.
  5. Die Groß-/Kleinschreibung spielt bei der Anzeige des Wertes nie eine Rolle.

Der kaufmännische Und-Buchstabe (&) kann Auswahlmöglichkeiten trennen, z. B. Name1=Wert1&Name2=Wert2. Die Parameter ReplicaSet und connectTimeoutMS sind in der folgenden Verbindung enthalten:

mongodb://db1.example.net:27017,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000

Hinweis: Treiber akzeptieren jetzt Semikolons (;) als optionale Trennzeichen, um die Kompatibilität mit älterer Software zu gewährleisten.

Beispiele für Verbindungszeichenfolgen

In den folgenden Beispielen finden Sie URI-Beispiele für beliebte Verbindungspunkte.

Datenbankserver lokal ausführen

Der Standardport eines lokalen Datenbankservers kann verwendet werden, um eine Verbindung mit dem folgenden Befehl herzustellen:

mongodb://localhost
Verwaltungsdatenbank

Um sich bei der Admin-Datenbank als foss mit dem Passwort fosslinux anzumelden, müssen die folgenden Befehle befolgt werden:

mongodb://foss:fosslinux@localhost
Eine Datenbank mit Aufzeichnungen

Verbinden und Anmelden bei der Datensatzdatenbank mit dem Passwort fosslinux als Systemadministrator.

mongodb://foss:fosslinux@localhost/records
Domänen-Sockets in UNIX

Verwenden Sie beim Anhängen an einen UNIX-Domain-Socket eine URL-verschlüsselte Verbindungszeichenfolge.

MongoDB-Links zu einem UNIX-Domänenendpunkt mit dem folgenden Pfad:

mongodb://%2Ftmp%2Fmongodb-27017.sock

Hinweis: Alle Treiber unterstützen keine UNIX-Domain-Sockets. Um mehr über Ihren Treiber zu erfahren, gehen Sie zum Abschnitt Treiberdokumentation.

Replikatsatz mit Benutzern auf unterschiedlichen Computern

Unten sehen Sie eine Verbindung zu einem Replikatsatz mit zwei Mitgliedern auf db1.example.net und db2.example.net:

mongodb://db1.example.net,db2.example.com/?replicaSet=test

Hinweis: Die Mongod-Instanz(en), die in der Replica-Set-Konfiguration bereitgestellt werden, müssen für ein Replica-Set angegeben werden.

Replica Set mit Benutzern auf localhost

Die Ports 27017, 27018 und 27019 werden verwendet, um eine Verbindung zu einem Replica-Set herzustellen, das auf localhost:

betrieben wird
mongodb://localhost,localhost:27018,localhost:27019/?replicaSet=test
Distributionsreplikatsatz lesen

Das Herstellen einer Verbindung zu einem Replikatsatz mit drei Mitgliedern und das Verteilen von Lesevorgängen an die sekundären Mitglieder beinhaltet die unten aufgeführte Methode:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
High-Level-Writing-Concern-Replik-Set

Das Herstellen einer Verbindung zu einem Replikatsatz mit Schreibbedenken und einer Zeitüberschreitung von zwei Sekunden, während auf die Replikation über eine Mehrheit der datentragenden stimmberechtigten Mitglieder gewartet wird, wird mit dieser Konfiguration erreicht:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
Freigegebener Cluster

Es ist möglich, eine Verbindung zu einem Sharding-Cluster mit mehreren Instanzen herzustellen, indem Sie Folgendes verwenden:

mongodb://router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
MongoDB-Atlas-Cluster

Im Folgenden wird eine Verbindung zu einem MongoDB-Atlas-Cluster mithilfe von AWS IAM-Anmeldeinformationen für die Authentifizierung hergestellt:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

Dieses Beispiel zeigt, wie die MONGODB-AWS-Authentifizierungsmethode und die $external authSource verwendet werden, um über AWS IAM-Anmeldeinformationen eine Verbindung zu Atlas herzustellen.

Der Wert AWS SESSION TOKEN authMechanismProperties muss wie folgt angegeben werden, wenn Sie ein AWS-Sitzungstoken verwenden:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>'

Hinweis: Solange die AWS-Zugriffsschlüssel-ID oder der geheime Zugriffsschlüssel eines der folgenden Zeichen enthält:(: / ? # [ ] @ ), müssen Sie die Prozentcodierung verwenden, um sie zu codieren.

Sie können auch normale AWS IAM-Umgebungsvariablen verwenden, um diese Anmeldeinformationen auf Ihrer Plattform anzugeben. Bei Verwendung der MONGODB-AWS-Authentifizierung prüft Mongosh und stellt fest, ob die folgenden Umgebungsvariablen vorhanden sind:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

Eine Verbindungszeichenfolge muss diese Anmeldeinformationen nicht enthalten, wenn sie konfiguriert sind.

In der Bash-Shell werden im folgenden Beispiel folgende Variablen gesetzt:

export AWS_ACCESS_KEY_ID='<aws access key id>'

export AWS_SECRET_ACCESS_KEY='<aws secret access key>'

export AWS_SESSION_TOKEN='<aws session token>'

Die Syntax zum Einrichten von Umgebungsvariablen unterscheidet sich in anderen Shells, seien Sie sich dessen also bewusst. Weitere Informationen finden Sie in der Dokumentation Ihrer Plattform.

Der folgende Befehl bestätigt, ob bestimmte Umgebungsvariablen gesetzt wurden oder nicht:

env | grep AWS

Der folgende Code zeigt, wie eine Verbindung zu einem MongoDB-Atlas-Cluster hergestellt wird, indem die unten aufgeführten Variablen verwendet werden:

mongosh 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

Das ist alles, was Sie über Verbindungszeichenfolgen in MongoDB wissen müssen. Wir hoffen, Sie fanden den Artikelleitfaden hilfreich. Wenn ja, hinterlassen Sie bitte eine Bemerkung im Kommentarbereich. Danke fürs Lesen.