2016-08-17 4 views
1

Ich habe die Authentifizierung in meiner MongoDB-Datenbank aktiviert, und ich verbinde mich über pymongo mit ihm. Alles funktioniert gut, wenn der Benutzer, der sich mit der DB verbindet, über alle relevanten Berechtigungen verfügt. Wenn jedoch ein Benutzer mit eingeschränkten Berechtigungen eine Verbindung herstellt, wird nur beim Ausführen des ersten Befehls eine Ausnahme ausgelöst. Gibt es eine Möglichkeit, die Berechtigungen des Benutzers für die Verbindung zu überprüfen?Pymongo überprüfen Benutzerberechtigungen für die Verbindung

+0

Hat meine Antwort für Sie funktioniert? – DAXaholic

Antwort

0

Wenn Sie eine aktuelle Version von verwenden pymongo Sie können diese page of the docs

In PyMongo 3 zu überprüfen, die MongoClient Konstruktor nicht mehr blockiert, während an den Server oder Server verbinden und es nicht mehr Raises ConnectionFailure, wenn sie nicht verfügbar sind, oder ConfigurationError, wenn die Anmeldeinformationen des Benutzers falsch sind. Stattdessen gibt der Konstruktor sofort zurück und startet den Verbindungsprozess für Hintergrundthreads. Die Option connect wird hinzugefügt, um zu steuern, ob diese Threads sofort gestartet werden oder wenn der Client zum ersten Mal verwendet wird.

Sie bieten auch eine ‚Abhilfe‘, wenn Sie direkt, ob die Verbindung erfolgreich mit diesem gegründet wurde

from pymongo.errors import ConnectionFailure 
client = MongoClient(connect=False) 
try: 
    result = client.admin.command("ismaster") 
except ConnectionFailure: 
    print("Server not available") 

Der Grund für die Verwendung der oben client.admin.command("ismaster") ist aufgrund der Tatsache, wissen wollen, dass keine besonderen Berechtigungen müssen ausgeführt werden

Jede Operation kann verwendet werden, um festzustellen, ob der Server verfügbar ist. Wir wählen Sie den Befehl "ismaster" hier, weil es billig ist und nicht erfordert Auth, so ist es eine einfache Möglichkeit, um zu überprüfen, ob der Server verfügbar ist.

Verwandte Themen