Alle Benutzer in der Mongo-Shell auflisten

Tahseen Tauseef 20 Juni 2023
  1. Authentifizieren Sie einen Benutzer
  2. Alle Benutzer in der Mongo-Shell auflisten
  3. db.getUser()-Methode in MongoDB
  4. db.getUsers()-Methode in MongoDB
Alle Benutzer in der Mongo-Shell auflisten

In diesem MongoDB-Artikel erfahren Sie, wie Sie einen Benutzer authentifizieren, alle Benutzer in der Mongo-Shell auflisten und die Methoden db.getUser() und db getUsers() verwenden.

Authentifizieren Sie einen Benutzer

Um sich als Benutzer zu authentifizieren, muss der Benutzer einen Benutzernamen, ein Kennwort und die diesem Benutzer zugeordnete Authentifizierungsdatenbank angeben. Daher ist es unmöglich, zwischen Benutzern in derselben mongosh-Sitzung zu wechseln.

Die Authentifizierung als anderer Benutzer bedeutet, dass die Sitzung über die Berechtigungen beider authentifizierter Benutzer verfügt. Sie können mongosh beenden und neu starten, um zwischen den Benutzern zu wechseln.

Mit mongosh können Sie sich entweder während der Verbindung authentifizieren oder nach der Verbindung authentifizieren.

Authentifizieren während der Verbindung

Starten Sie mongosh mit den Kommandozeilenoptionen -u, -p und --authenticationDatabase.

mongosh --port 27017  --authenticationDatabase \
    "admin" -u "myUserAdmin" -p

Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.

Nach Verbindung authentifizieren

Die Verwendung von mongosh stellt eine Verbindung zur Instanz mongod oder mongos her.

mongosh --port 27017

Wechseln Sie in mongosh zur Authentifizierungsdatenbank (in diesem Fall admin) und verwenden Sie die Methode db.auth(,) oder den Befehl authenticate, um sich bei der Authentifizierungsdatenbank zu authentifizieren.

use admin
db.auth("myUserAdmin", passwordPrompt()) // or cleartext password

Die Methode passwordPrompt() fordert den Benutzer auf, das Passwort einzugeben. Der Benutzer kann sein Passwort auch direkt als Zeichenfolge angeben.

Es wird empfohlen, die Methode passwordPrompt() zu verwenden, um zu vermeiden, dass das Passwort auf Ihrem Bildschirm angezeigt wird und möglicherweise das Passwort an Ihren Shell-Verlauf weitergegeben wird. Geben Sie stattdessen das Kennwort ein, wenn Sie dazu aufgefordert werden.

Alle Benutzer in der Mongo-Shell auflisten

Um alle Benutzer aufzulisten, können Sie mit mongosh die Sammlung system.users abfragen.

use admin
db.system.users.find()

Sie dürfen die Sammlung system.users nicht direkt ändern. Um die Benutzer zu verwalten, können Sie die vorgesehenen Benutzerverwaltungsbefehle verwenden.

Um beispielsweise alle Benutzer eines Sharding-Clusters aufzulisten, der über einen mongos erstellt wurde, stellen Sie eine Verbindung zu einem mongos her und führen Sie den nächsten Befehl aus. MongoDB speichert Benutzer, die über einen mongos erstellt wurden, in der admin-Datenbank der Konfigurationsserver.

Um alle Shards aufzulisten, können sich die lokalen Benutzer direkt mit dem jeweiligen Shard verbinden und den nächsten Befehl ausführen. MongoDB wird verwendet, um shard local-Benutzer in der admin-Datenbank des Shards selbst zu speichern.

Diese lokalen Shard-Benutzer sind unabhängig von denen, die dem Shard-Cluster durch einen mongos hinzugefügt wurden. Shard local-Benutzer sind auf den Shard beschränkt und für mongos nicht verfügbar.

db.getUser()-Methode in MongoDB

Diese Methode hat die folgende Syntax.

db.getUser(username, args)

Diese Methode gibt die Benutzerinformationen für einen bestimmten Benutzer zurück. Der Benutzer kann diese Methode in der Datenbank des Benutzers ausführen.

Sie müssen in der Datenbank vorhanden sein, auf der die Methode ausgeführt wird. Die Methode db.getUser() besteht aus den folgenden Parametern.

db.getUser( "<username>", {
   showCredentials: <Boolean>,
   showPrivileges: <Boolean>,
   showAuthenticationRestrictions: <Boolean>,
   filter: <document>
} )
Parameter Typ Beschreibung
username Schnur Der Name des Benutzers, für den Informationen abgerufen werden sollen.
args dokumentieren Optional. Ein Dokument, das zusätzliche Argumente angibt.

Das args-Dokument unterstützt die folgenden Felder.

Feld Typ Beschreibung
showCredentials Boolesch Dies ist ein optionales Feld. Setzen Sie dieses Feld auf true, um den Passwort-Hash des Benutzers anzuzeigen. Standardmäßig ist dieses Feld false.
showPrivileges Boolesch Dies ist ein optionales Feld. Setzen Sie dieses Feld auf true, um die vollen Rechte des Benutzers zu sehen, einschliesslich der erweiterten Informationen. Standardmäßig ist dieses Feld false. Wenn Sie alle Benutzer anzeigen, können Sie dieses Feld nicht angeben.
showAuthenticationRestrictions Boolesch Dies ist ein optionales Feld. Setzen Sie dieses Feld auf true, um die Authentifizierungsbeschränkungen des Benutzers anzuzeigen. Standardmäßig ist dieses Feld false. Wenn Sie alle Benutzer anzeigen, können Sie dieses Feld nicht angeben.
filter dokumentieren Dies ist ein optionales Feld. Dieses Dokument spezifiziert $match-Stufenbedingungen, um Informationen für Benutzer zurückzugeben, die den Filterbedingungen entsprechen.

Die Methode db.getUser() ist in den Befehl usersInfo eingeschlossen.

Der Benutzer muss die Aktion viewUser in der Datenbank des anderen Benutzers haben, um die Informationen eines anderen Benutzers anzuzeigen. Benutzer haben Zugriff auf ihre Daten.

Beispiel:

Die folgenden Operationen geben Informationen über einen beispielhaften appClient-Benutzer in einer accounts-Datenbank zurück.

use accounts
db.getUser("appClient")

Die Ausgabe für das obige Beispiel ist unten angegeben.

{
   _id: 'accounts.appClient',
   userId: UUID("1c2fc1bf-c4dc-4a22-8b04-3971349ce0dc"),
   user: 'appClient',
   db: 'accounts',
   roles: [],
   mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}

db.getUsers()-Methode in MongoDB

Diese Methode hat die folgende Syntax.

db.getUsers(<options>)

Diese Methode gibt die Informationen für alle Benutzer in der Datenbank zurück. Die Methode db.getUsers() ist in den Befehl usersInfo: 1 eingeschlossen.

Die Methode db.getUsers() akzeptiert die folgenden Optionen.

db.getUsers( {
   showCredentials: <Boolean>,
   filter: <document>
} )
Feld Typ Beschreibung
showCredentials Boolesch Dies ist ein optionales Feld. Sie können das Feld auf true setzen, um den Passwort-Hash des Benutzers anzuzeigen. Standardmäßig ist dieses Feld false..
filter dokumentieren Dies ist ein optionales Feld. Dieses Dokument spezifiziert $match-Stufenbedingungen, um Informationen für Benutzer zurückzugeben, die den Filterbedingungen entsprechen.

Der Benutzer muss die Aktion viewUser in der Datenbank des anderen Benutzers haben, um die Informationen eines anderen Benutzers anzuzeigen. Benutzer können ihre Informationen anzeigen.

Beispiel:

Zeigen Sie alle Benutzer für eine bestimmte Datenbank an, die dem angegebenen Filter entspricht.

Die Methode db.getUsers() kann ein filter-Dokument akzeptieren, um Informationen für Benutzer zurückzugeben, die der Filterbedingung entsprechen. Um alle Benutzer für die aktuelle Datenbank anzuzeigen, die über SCRAM-SHA-256-Anmeldeinformationen verfügen.

db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })

Während Sie alle Benutzer anzeigen, können Sie die Option showCredentials angeben, aber nicht die Option showPrivileges oder showAuthenticationRestrictions.

Mithilfe dieses MongoDB-Artikels haben Sie also gelernt, wie Sie einen Benutzer authentifizieren, alle Benutzer in der Mongo-Shell auflisten und die Methoden db.getUser() und db.getUsers() verwenden.

Verwandter Artikel - MongoDB User