Einführung
Sobald Sie einen MongoDB-Server verfügbar haben, müssen Sie als eine der ersten und häufigsten Aktionen eine Verbindung zur eigentlichen Datenbank herstellen. Dies erfordert eine Koordination, um sicherzustellen, dass die Datenbank so konfiguriert ist, dass Ihr Client eine Verbindung herstellen und sich authentifizieren kann.
Das bedeutet, dass Sie verstehen müssen, wie Sie eine Verbindung zu Ihrer MongoDB-Datenbank herstellen, indem Sie den Serverstandort, Verbindungsparameter und die richtigen Anmeldeinformationen angeben. In diesem Leitfaden konzentrieren wir uns darauf, wie Sie sich von der Client-Seite mit mongo
mit der Datenbank verbinden MongoDB-Shell-Client, der hauptsächlich für interaktive Sitzungen mit Ihren Datenbanken entwickelt wurde.
In einem Begleitleitfaden erfahren Sie, wie Sie die Authentifizierungseinstellungen von MongoDB so konfigurieren, dass sie Ihren Anforderungen entsprechen. Ziehen Sie in Betracht, beide Teile zu lesen, um sich ein vollständiges Bild davon zu machen, wie die Authentifizierung aus Sicht beider Parteien implementiert wird.
Grundlegende Informationen über den mongo
Kunde
Der mongo
client ist ein Befehlszeilen-JavaScript-Client zum Herstellen einer Verbindung mit, Steuern und Interagieren mit MongoDB-Datenbankservern. In vielerlei Hinsicht ist es die einfachste Möglichkeit, eine Verbindung zu Ihrer MongoDB-Datenbank herzustellen und diese zu verwenden, da sie in der MongoDB-Installation enthalten und auf allen gängigen Plattformen verfügbar ist. Der mongo
Client ist besonders nützlich für die Erstkonfiguration und für interaktive Sitzungen, in denen Sie Ihre Daten untersuchen oder Abfragen basierend auf vorläufigen Ergebnissen iterieren möchten.
Die Art und Weise, wie Sie sich mit dem mongo
verbinden Shell hängt von der Konfiguration des MongoDB-Servers und den Optionen ab, die Ihnen zur Authentifizierung bei einem Konto zur Verfügung stehen. In den folgenden Abschnitten gehen wir auf einige der grundlegenden Verbindungsoptionen ein. Der Übersichtlichkeit halber unterscheiden wir zwischen lokalen und entfernten Verbindungen:
- lokale Verbindung :eine Verbindung, bei der sich der Client und die MongoDB-Instanz auf demselben Server befinden
- Fernverbindung :Hier stellt der Client eine Verbindung zu einer über das Netzwerk zugänglichen MongoDB-Instanz her, die auf einem anderen Computer ausgeführt wird
Beginnen wir damit, von demselben Computer aus eine Verbindung zu einer Datenbank herzustellen.
Verbinden mit einer lokalen Datenbank mit mongo
Ohne Argumente wird der mongo
versucht, eine Verbindung zu einer lokalen MongoDB-Instanz herzustellen.
Dazu versucht es, sich mit Port 27017 an der lokalen Loopback-Adresse zu verbinden:127.0.0.1:27017
. Dies ist eine der Schnittstellen, an die sich MongoDB-Server in ihrer Standardkonfiguration binden (auf MongoDB kann auch über eine lokale Socket-Datei zugegriffen werden).
Sie können eine Verbindung zu einem lokalen MongoDB-Server herstellen, der mit seiner Standardkonfiguration ausgeführt wird, indem Sie Folgendes eingeben:
mongo
Bei einer erfolgreichen Verbindung sehen Sie wahrscheinlich eine ziemlich lange Reihe von Nachrichten, gefolgt von einer MongoDB-Shell-Eingabeaufforderung:
MongoDB shell version v4.4.6 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("9cf2d126-d25f-4ed8-b159-ef3bba4fcc53") } MongoDB server version: 4.4.6 --- The server generated these startup warnings when booting: 2021-06-04T12:26:53.374+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem 2021-06-04T12:26:54.562+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted --- --- Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >
Die Ausgabe zeigt Protokolle, die von mongo
generiert wurden Befehl beim Verbindungsaufbau, gefolgt von einigen Warnungen, die vom MongoDB-Server beim Start generiert werden. Schließlich gibt es einen Hinweis zu einem MongoDB-Überwachungsdienst, den Sie nutzen oder deaktivieren können.
Eine der Warnungen des MongoDB-Servers weist darauf hin, dass die Zugriffskontrolle derzeit nicht aktiviert ist. Aus diesem Grund konnten wir eine Verbindung herstellen, ohne Anmeldeinformationen oder andere Authentifizierungsdetails anzugeben.
Wenn Sie sich mit einem lokalen MongoDB-Server verbinden, der über verfügt mit Zugriffskontrolle konfiguriert wurde, müssen Sie zusätzliche Informationen angeben, um eine Verbindung herzustellen. Sie müssen mindestens einen Benutzernamen und ein Passwort angeben, um sich mit dem zugehörigen --username
zu verbinden und --password
Optionen:
mongo --username <mongo_username> --password
Eingabe des --password
Option am Ende und ohne Angabe des Passworts inline bedeutet, dass Sie möchten, dass MongoDB stattdessen zur Eingabe eines Passworts auffordert. Dies ist sicherer als die Angabe eines Passworts im Befehl selbst, da dies durch den Shell-Verlauf, Prozesslisten und andere Mechanismen sichtbar oder wiederherstellbar sein kann.
Der MongoDB-Server fordert Sie zur Eingabe des Benutzerpassworts auf, bevor er sich mit der Datenbank verbindet:
MongoDB shell version v.4.4.6Enter password:
Nach erfolgreicher Authentifizierung sollten Sie mit der Datenbank verbunden sein und Ihre Sitzung normal fortsetzen können.
Sie können diese Informationen auch bereitstellen, indem Sie anstelle von --username
eine Verbindungszeichenfolge übergeben und --password
Optionen:
mongo "mongodb://<mongo_username>:@127.0.0.1"
Da wir angegeben haben, dass der Benutzer ein Passwort mit dem <username>:
hat -Syntax, habe aber keinen bereitgestellt, den mongo
Shell wird nach dem Passwort fragen.
Alternativ können Sie sich nach dem Verbinden auch mit dem normalen mongo
authentifizieren Befehl, indem Sie db.auth
verwenden Befehl.
Stellen Sie zunächst eine Verbindung zur MongoDB-Datenbank her, ohne Anmeldeinformationen anzugeben:
mongo
Sie erhalten wie gewohnt eine Eingabeaufforderung, aber wenn die Zugriffskontrolle aktiviert ist, haben Sie keine Berechtigung, viele Aktionen auszuführen, bis Sie sich authentifizieren. Zum Beispiel show dbs
Der Befehl wird wahrscheinlich leer sein, da Sie keinen Zugriff haben, um die verfügbaren Datenbanken abzufragen:
show dbs
Um sich zu authentifizieren, wählen Sie zuerst die Datenbank aus, in der Ihr Benutzer definiert ist. Meistens ist das der admin
Datenbank:
use admin
Verwenden Sie danach db.auth()
um Ihren Benutzernamen anzugeben und eine Passwortabfrage anzufordern:
db.auth({user: "<mongo_username>", passwordPrompt()})
Sie werden wie zuvor nach dem Passwort des Benutzerkontos gefragt:
Enter password:
Wenn Sie erfolgreich sind, gibt der Server 1
aus :
Enter password:1
Sie haben nun den regulären Zugriff des Benutzers, den Sie authentifiziert haben als:
show dbs
admin 0.000GBconfig 0.000GBlocal 0.000GB
Sie können die Liste der authentifizierten Benutzer und Rollen, die der aktuellen Verbindung zugeordnet sind, jederzeit anzeigen, indem Sie Folgendes eingeben:
db.runCommand("connectionStatus")
{ "authInfo" : { "authenticatedUsers" : [ { "user" : "root", "db" : "admin" } ], "authenticatedUserRoles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }, "ok" : 1}
Verbinden mit einer entfernten Datenbank
Wenn Sie eine Verbindung zu einer entfernten MongoDB-Datenbank herstellen möchten, müssen Sie einige zusätzliche Details angeben, wenn Sie mongo
verwenden Schale.
Insbesondere müssen Sie den --host
einschließen Option und möglicherweise der --port
Option auch, wenn der MongoDB-Server auf einem nicht standardmäßigen Port lauscht. In fast allen Fällen müssen Sie auch den --user
angeben und --password
Optionen, um sich auch beim Remote-Server zu authentifizieren.
Die Grundstruktur des Befehls beim Verbinden mit einer entfernten MongoDB-Datenbank sieht daher etwa so aus:
mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password
Wie im Abschnitt über die Verbindung zu einer lokalen Datenbank erwähnt, platzieren Sie --password
Option am Ende und ohne Angabe des Passworts inline zeigt an, dass Sie mongo
möchten Shell, um stattdessen nach einem Passwort zu fragen. Dies ist sicherer als die Angabe eines Passworts im Befehl selbst, da dies durch den Shell-Verlauf, Prozesslisten und andere Mechanismen sichtbar oder wiederherstellbar sein kann.
Der MongoDB-Server fordert Sie zur Eingabe des Benutzerpassworts auf, bevor er sich mit der Datenbank verbindet:
MongoDB shell version v.4.4.6Enter password:
Nach erfolgreicher Authentifizierung sollten Sie mit der Datenbank verbunden sein und Ihre Sitzung normal fortsetzen können.
Sie können diese Informationen auch bereitstellen, indem Sie eine Verbindungszeichenfolge übergeben, anstatt --host
zu verwenden , --port
, --username
und --password
Optionen:
mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"
Da wir angegeben haben, dass der Benutzer ein Passwort mit dem <username>:
hat -Syntax, habe aber keinen bereitgestellt, den mongo
Shell wird nach dem Passwort fragen.
Anpassen der Authentifizierungskonfiguration eines MongoDB-Servers
Wenn Sie die Regeln ändern möchten, die festlegen, wie Benutzer sich bei Ihren MongoDB-Instanzen authentifizieren können, können Sie dies tun, indem Sie die Konfiguration Ihres Servers ändern. In diesem Artikel erfahren Sie, wie Sie die Authentifizierungskonfiguration von MongoDB ändern.
Fazit
In diesem Leitfaden haben wir die MongoDB-Authentifizierung von der Clientseite behandelt. Wir haben gezeigt, wie man den mongo
verwendet Shell, um sich mit einer Vielzahl von Methoden sowohl mit lokalen als auch mit entfernten Datenbankinstanzen zu verbinden.
Zu wissen, wie man eine Verbindung zu verschiedenen MongoDB-Instanzen herstellt, ist von entscheidender Bedeutung, wenn Sie mit der Arbeit am Datenbanksystem beginnen. Sie können eine lokale MongoDB-Instanz für die Entwicklung ausführen, die keine spezielle Authentifizierung erfordert, aber Ihre Datenbanken in Staging und Produktion erfordern mit ziemlicher Sicherheit eine Authentifizierung. Wenn Sie sich in beiden Fällen authentifizieren können, können Sie in verschiedenen Umgebungen gut arbeiten.