Wesentliche MongoDB-Administrationsbefehle für Anfänger
MongoDB, eine führende NoSQL-Dokumentendatenbank, ist bekannt für ihre Flexibilität und Skalierbarkeit. Während Entwickler sich oft auf CRUD-Operationen (Create, Read, Update, Delete) konzentrieren, beruht eine effektive Verwaltung der Datenbankumgebung stark auf dem Verständnis wesentlicher Administrationsbefehle. Dieser Leitfaden führt Anfänger in die Kernbefehle ein, die für die Datenbankverwaltung, Benutzeradministration und Systemzustandsprüfungen unerlässlich sind, um sicherzustellen, dass Ihre MongoDB-Instanz reibungslos und sicher läuft.
Die Beherrschung dieser administrativen Aufgaben ist entscheidend für jeden, der über die einfache lokale Entwicklung hinaus in Produktionsumgebungen arbeitet. Wir werden untersuchen, wie Sie mit der mongosh-Shell interagieren, um Datenbanken, Sammlungen und Benutzer zu verwalten und notwendige Systemdiagnosen durchzuführen.
Zugriff auf die MongoDB-Shell (mongosh)
Die primäre Schnittstelle zur Ausführung von Administrationsbefehlen ist die MongoDB-Shell, auf die typischerweise über den Befehl mongosh zugegriffen wird. Hier führen Sie JavaScript-basierte Befehle direkt gegen Ihre MongoDB-Instanz aus.
Um sich mit einer lokalen MongoDB-Instanz zu verbinden, die auf dem Standardport (27017) läuft, geben Sie einfach ein:
mongosh
Sobald Sie verbunden sind, sehen Sie die Eingabeaufforderung >, die anzeigt, dass Sie bereit sind, Befehle einzugeben.
Datenbankverwaltungsbefehle
Die Verwaltung der aktuell verwendeten Datenbank und die Anzeige vorhandener Datenbanken sind grundlegende administrative Aufgaben.
Auflisten aller Datenbanken
Um eine Liste aller auf dem MongoDB-Server vorhandenen Datenbanken anzuzeigen, verwenden Sie den Befehl show dbs:
> show dbs
admin 40.00 KiB
config 72.00 KiB
local 72.00 KiB
myAppDB 100.00 KiB
Wechseln von Datenbanken
Bevor Sie eine Datenbank oder Sammlung erstellen können, müssen Sie mit dem Befehl use zum gewünschten Kontext wechseln. Wenn die Datenbank nicht existiert, erstellt MongoDB sie implizit bei der ersten Dateneinfügung.
> use myAppDB
switched to db myAppDB
Anzeigen der aktuellen Datenbank
Um zu bestätigen, in welchem Datenbankkontext Sie sich derzeit befinden, verwenden Sie db:
> db
myAppDB
Löschen einer Datenbank
Warnung: Diese Aktion löscht dauerhaft alle Daten in der angegebenen Datenbank. Seien Sie äußerst vorsichtig, insbesondere in Produktionsumgebungen.
Um die aktuelle Datenbank (die von db zurückgegebene) zu löschen:
> db.dropDatabase()
{ "dropped" : "myAppDB", "ok" : 1 }
Sammlungsverwaltungsbefehle
Sammlungen sind vergleichbar mit Tabellen in relationalen Datenbanken. Ihre Verwaltung ist mit der db-Objektabkürzung unkompliziert.
Auflisten von Sammlungen
Wenn Sie sich in einer bestimmten Datenbank befinden, listen Sie alle Sammlungen darin mit show collections (oder der älteren Entsprechung db.getCollectionNames()) auf:
> show collections
users
products
orders
Erstellen von Sammlungen
Sammlungen werden oft automatisch bei der ersten Einfügung erstellt. Sie können jedoch explizit eine mit db.createCollection() erstellen, um die Validierungsregeln oder das Capping zu steuern.
// Erstellen einer Standard-Sammlung namens 'logs'
> db.createCollection("logs")
{ "ok" : 1 }
Löschen einer Sammlung
Um eine Sammlung vollständig zu entfernen:
> db.logs.drop()
true
Benutzer- und Sicherheitsadministration
Für jede für die Produktion vorgesehene Datenbank ist die Sicherung des Zugriffs durch Benutzerauthentifizierung zwingend erforderlich. Die Benutzerverwaltung wird typischerweise innerhalb der admin-Datenbank oder der spezifischen Datenbank durchgeführt, in der der Benutzer Berechtigungen haben soll.
Wechseln zur Admin-Datenbank zur Benutzererstellung
Es ist üblich, administrative Benutzer in der admin-Datenbank zu erstellen, obwohl rollenbasierte Benutzer in Anwendungsdatenbanken erstellt werden können.
> use admin
switched to db admin
Erstellen eines Benutzers
Verwenden Sie db.createUser(), um einen neuen Benutzer hinzuzufügen. Dies erfordert die Angabe des Benutzernamens, eines sicheren Passworts und zugewiesener Rollen.
> db.createUser(
... {
... user: "appAdmin",
... pwd: passwordPrompt(), // Fordert sicher zur Eingabe des Passworts auf
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWrite" ]
... }
... )
- Tipp: Die Verwendung von
passwordPrompt()wird dringend empfohlen, anstatt Klartext-Passwörter in Skripten einzubetten.
Auflisten von Benutzern
Um vorhandene Benutzer in der aktuellen Datenbank anzuzeigen:
> show users
Systemüberwachung und Diagnose
Administratoren benötigen Möglichkeiten, den Zustand, Status und die Konfiguration der laufenden MongoDB-Instanz zu überprüfen.
Überprüfen des Serverstatus
Der Befehl serverStatus gibt ein umfassendes Dokument zurück, das Statistiken über den Betrieb des Servers enthält, einschließlich Speichernutzung, Verbindungen und Operationen.
> db.serverStatus()
// Die Ausgabe ist ein großes JSON-Dokument mit Metriken.
Anzeigen aktueller Verbindungen
Um aktive Client-Verbindungen anzuzeigen, können Sie den Befehl currentOp abfragen oder den Abschnitt connections in der Ausgabe von serverStatus einsehen. Eine direkte Möglichkeit zur Anzeige aktueller Operationen ist:
> db.currentOp()
Überprüfen der Konfiguration
Um die aktuell auf die Instanz angewendeten Konfigurationseinstellungen anzuzeigen:
> db.getMongo().getDB('admin').runCommand({ getParameter: 1, all: 1 })
Zusammenfassung und nächste Schritte
Diese wesentlichen Befehle – die das Wechseln von Datenbanken, die Sammlungsverwaltung, die Benutzererstellung und grundlegende Überwachung abdecken – bilden die Grundlage für eine effektive MongoDB-Administration. Während mongosh sofortiges Feedback liefert, erfordert erweiterte Überwachung oft die Integration mit MongoDB Compass oder die Verwendung der MongoDB Atlas-Oberfläche für visuelle Diagnosen.
Bewährte Vorgehensweise: Verbinden Sie sich immer mit Anmeldedaten und beschränken Sie Benutzerrollen auf die minimal erforderlichen Berechtigungen (Prinzip der geringsten Privilegien).
Üben Sie diese Befehle zunächst in einer Nicht-Produktionsumgebung, um Vertrauen aufzubauen, bevor Sie kritische Datenspeicher verwalten.