Alle Benutzer in der Mongo-Shell auflisten
- Authentifizieren Sie einen Benutzer
- Alle Benutzer in der Mongo-Shell auflisten
-
db.getUser()
-Methode in MongoDB -
db.getUsers()
-Methode in MongoDB
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.