HOWTO · MongoDB

Alle Benutzer in der Mongo-Shell auflisten

Erfahren Sie, wie Sie einen Benutzer authentifizieren, alle Benutzer in der Mongo-Shell mit show users auflisten und die Methoden db.getUser() und db.getUsers() verwenden — gemäß der MongoDB-8.0-Dokumentation für mongosh.

Auf dieser Seite

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. Die Befehle und Ausgaben folgen der MongoDB-8.0-Dokumentation und werden in mongosh, der MongoDB Shell, ausgeführt.

MongoDB-Benutzer sind pro Datenbank definiert: Ein Benutzer existiert in einer Authentifizierungsdatenbank, und jeder Befehl in diesem Artikel wird gegen eine bestimmte Datenbank ausgeführt. Die meisten Beispiele verwenden die admin-Datenbank, in der Administratoren üblicherweise Benutzer anlegen.

Authentifizieren Sie einen Benutzer

Um sich als Benutzer zu authentifizieren, müssen Sie einen Benutzernamen, ein Passwort und die mit diesem Benutzer verknüpfte Authentifizierungsdatenbank angeben. Es ist nicht möglich, innerhalb derselben mongosh-Sitzung zwischen Benutzern zu wechseln: Die Authentifizierung als ein anderer Benutzer bedeutet, dass die Sitzung die Rechte beider authentifizierter Benutzer besitzt. Um zwischen Benutzern zu wechseln, beenden Sie mongosh und starten es neu.

Mit mongosh können Sie sich entweder während der Verbindung 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

Verbinden Sie mongosh ohne Anmeldedaten mit der mongod- oder mongos-Instanz:

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 gegen die Authentifizierungsdatenbank zu authentifizieren:

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

Die Methode passwordPrompt() fordert Sie zur Eingabe des Passworts auf. Sie können Ihr Passwort auch direkt als String angeben, aber passwordPrompt() wird empfohlen, damit das Passwort nicht auf Ihrem Bildschirm sichtbar ist und nicht in Ihre Shell-Historie gelangen kann.

Alle Benutzer in der Mongo-Shell auflisten

Der Shell-Helfer show users listet alle Benutzer der aktuellen Datenbank auf; er führt db.getUsers() aus, das weiter unten in einem eigenen Abschnitt beschrieben wird. Wechseln Sie zuerst zu der Datenbank, deren Benutzer Sie auflisten möchten — für in admin angelegte Benutzer ist das:

use admin
show users

Die Ausgabe enthält ein Dokument pro Benutzer mit Feldern wie _id, userId, user, db, roles und mechanisms. Da Benutzer zu einer Datenbank gehören, führen Sie den Befehl einmal pro Datenbank aus, um die Benutzer einer anderen Datenbank zu prüfen.

Sie dürfen die Sammlung system.users nicht direkt verändern. Verwenden Sie zur Verwaltung der Benutzer die dafür vorgesehenen Befehle und Methoden der Benutzerverwaltung, wie db.getUser(), db.getUsers() und db.createUser().

db.getUser()-Methode in MongoDB

Die Methode db.getUser() gibt die Benutzerinformationen für einen angegebenen Benutzer zurück. Führen Sie diese Methode auf der Datenbank des Benutzers aus; der Benutzer muss in dieser Datenbank existieren, und wenn der Benutzer nicht existiert, gibt die Methode null zurück. Die Methode hat die folgende Syntax:

db.getUser(username, args)

Die Methode db.getUser() besteht aus den folgenden Parametern:

Parameter Type Description
username string Der Name des Benutzers, für den Informationen abgerufen werden sollen.
args document Optional. Ein Dokument, das zusätzliche Argumente angibt.

Das args-Dokument unterstützt die folgenden Felder:

db.getUser( "<username>", {
   showCredentials: <Boolean>,
   showCustomData: <Boolean>,
   showPrivileges: <Boolean>,
   showAuthenticationRestrictions: <Boolean>,
   filter: <document>
} )
Field Type Description
showCredentials Boolean Optional. Setzen Sie dieses Feld auf true, um den Passwort-Hash des Benutzers anzuzeigen. Standardmäßig ist dieses Feld false.
showCustomData Boolean Optional. Setzen Sie dieses Feld auf false, um die customData des Benutzers aus der Ausgabe wegzulassen. Standardmäßig ist dieses Feld true. Neu in Version 5.2.
showPrivileges Boolean Optional. Setzen Sie dieses Feld auf true, um den vollständigen Satz von Rechten des Benutzers anzuzeigen, einschließlich der erweiterten Informationen für die vererbten Rollen. Standardmäßig ist dieses Feld false. Wenn Sie alle Benutzer anzeigen, können Sie dieses Feld nicht angeben.
showAuthenticationRestrictions Boolean Optional. Setzen Sie dieses Feld auf true, um die Authentifizierungseinschränkungen des Benutzers anzuzeigen. Standardmäßig ist dieses Feld false. Wenn Sie alle Benutzer anzeigen, können Sie dieses Feld nicht angeben.
filter document Optional. Ein Dokument, das Bedingungen der $match-Phase angibt, um Informationen für Benutzer zurückzugeben, die den Filterbedingungen entsprechen.

Die Methode db.getUser() kapselt den Befehl usersInfo: <username>. Um die Informationen eines anderen Benutzers anzuzeigen, müssen Sie die Aktion viewUser auf der Datenbank des anderen Benutzers besitzen. Benutzer können ihre eigenen Informationen anzeigen.

Beispiel: Die folgenden Operationen geben Informationen über einen Beispielbenutzer appClient 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

Die Methode db.getUsers() gibt die Informationen für alle Benutzer in der Datenbank zurück. Sie kapselt den Befehl usersInfo: 1 und hat die folgende Syntax:

db.getUsers(<options>)

Die Methode db.getUsers() nimmt die folgenden Optionen entgegen:

db.getUsers( {
   showCredentials: <Boolean>,
   showCustomData: <Boolean>,
   filter: <document>
} )
Field Type Description
showCredentials Boolean Optional. Setzen Sie dieses Feld auf true, um den Passwort-Hash des Benutzers anzuzeigen. Standardmäßig ist dieses Feld false.
showCustomData Boolean Optional. Setzen Sie dieses Feld auf false, um die customData der Benutzer aus der Ausgabe wegzulassen. Standardmäßig ist dieses Feld true. Neu in Version 5.2.
filter document Optional. Ein Dokument, das Bedingungen der $match-Phase angibt, um Informationen für Benutzer zurückzugeben, die den Filterbedingungen entsprechen.

Wie bei db.getUser() müssen Sie, um die Informationen eines anderen Benutzers anzuzeigen, die Aktion viewUser auf der Datenbank des anderen Benutzers besitzen, und Benutzer können ihre eigenen Informationen anzeigen.

Beispiel: Die Methode db.getUsers() kann ein filter-Dokument akzeptieren, um Informationen für Benutzer zurückzugeben, die der Filterbedingung entsprechen. Um alle Benutzer der aktuellen Datenbank anzuzeigen, die SCRAM-SHA-256-Anmeldedaten haben, führen Sie aus:

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

Beim Anzeigen aller Benutzer können Sie die Option showCredentials angeben, nicht aber die Optionen showPrivileges oder showAuthenticationRestrictions.

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