MySQL:: MySQL 8.0 Referenzhandbuch:: 13.7.1.10 PASSWORD Statement

13.7.1.10 PASSWORD Statement

Die Anweisung SET PASSWORD weist einem MySQL-Benutzerkonto ein Passwort zu. Das Passwort kann entweder explizit in der Anweisung angegeben oder zufällig von MySQL generiert werden. Die Anweisung kann auch eine Kennwortüberprüfungsklausel enthalten, die das aktuelle Kennwort des Kontos angibt, das ersetzt werden soll, und eine Klausel, die verwaltet, ob ein Konto über ein sekundäres Kennwort verfügt., 'auth_string' und 'current_auth_string' stellen jeweils ein Klartext (unverschlüsselt) Passwort dar.

Hinweis

Anstatt SET PASSWORD zum Zuweisen von Kennwörtern zu verwenden, ist ALTER USER die bevorzugte Anweisung für Kontoänderungen, einschließlich der Zuweisung von Kennwörtern., Beispiel:

ALTER USER user IDENTIFIED BY 'auth_string';

Hinweis

Klauseln für zufällige Kennwortgenerierung, Kennwortüberprüfung und sekundäre Kennwörter gelten nur für Konten, die ein Authentifizierungs-Plugin verwenden, das Anmeldeinformationen intern in MySQL speichert. Für Konten, die ein Plugin verwenden, das die Authentifizierung für ein Anmeldeinformationssystem durchführt, das außerhalb von MySQL liegt, muss die Kennwortverwaltung auch extern für dieses System durchgeführt werden. Weitere Informationen zur Speicherung interner Anmeldeinformationen finden Sie in Abschnitt 6.2.15, „Kennwortverwaltung“.,

DieREPLACE 'current_auth_string' Klausel führt die Passwortüberprüfung durch und ist ab MySQL 8.0.13 verfügbar. Wenn gegeben:

  • REPLACE legt den aktuellen Konto-Passwort, um ersetzt werden, die als Klartext (unverschlüsselt) string.

  • Die Klausel muss angegeben werden, wenn Kennwortänderungen für das Konto erforderlich sind, um das aktuelle Kennwort anzugeben, um zu überprüfen, ob der Benutzer, der versucht, die Änderung vorzunehmen, das aktuelle Kennwort tatsächlich kennt.,

  • Die Klausel ist optional, wenn sich das Kennwort für das Konto ändert, das aktuelle Kennwort jedoch nicht angegeben werden muss.

  • Die Anweisung schlägt fehl, wenn die Klausel angegeben ist, aber nicht mit dem aktuellen Kennwort übereinstimmt, auch wenn die Klausel optional ist.

  • REPLACE kann nur beim Ändern des Kontokennworts für den aktuellen Benutzer angegeben werden.

Weitere Informationen zur Kennwortüberprüfung durch Angabe des aktuellen Kennworts finden Sie in Abschnitt 6.2.15, „Kennwortverwaltung“.,

DieRETAIN CURRENT PASSWORD Klausel implementiert Dual-Password-Fähigkeit und ist ab MySQL 8.0.14 verfügbar. Falls angegeben:

  • RETAIN CURRENT PASSWORD behält das aktuelle Kennwort des Kontos als sekundäres Kennwort bei und ersetzt das vorhandene sekundäre Kennwort. Das neue Passwort wird zum primären Passwort, aber Clients können das Konto verwenden, um eine Verbindung zum Server herzustellen, indem sie entweder das primäre oder das sekundäre Passwort verwenden., (Ausnahme: Wenn das in der Anweisung SET PASSWORD angegebene neue Kennwort leer ist, wird auch das sekundäre Kennwort leer, selbst wenn RETAIN CURRENT PASSWORD angegeben ist.)

  • Wenn Sie RETAIN CURRENT PASSWORD für ein Konto mit einem leeren Primärpasswort angeben, schlägt die Anweisung fehl.

  • Wenn ein Konto über ein sekundäres Kennwort verfügt und Sie sein primäres Kennwort ändern, ohne RETAIN CURRENT PASSWORD anzugeben, bleibt das sekundäre Kennwort unverändert.

Weitere Informationen zur Verwendung von Dual-Passwörtern finden Sie in Abschnitt 6.2.,15, „Passwort-Management“.

SET PASSWORD erlaubt diese auth_option Syntaxen:

  • = 'auth_string'

    Weist dem Konto das angegebene wörtliche Passwort zu.

  • TO RANDOM

    Weist dem Konto ein zufällig von MySQL generiertes Passwort zu. Die Anweisung gibt auch das Klartext-Kennwort in einer Ergebnismenge zurück, um es dem Benutzer oder der Anwendung zur Verfügung zu stellen, die die Anweisung ausführen.,

    Einzelheiten zur Ergebnismenge und zu den Merkmalen zufällig generierter Kennwörter finden Sie unter Zufällige Kennwortgenerierung.

    Die zufällige Kennwortgenerierung ist ab MySQL 8.0.18 verfügbar.

  • Wichtig

    Unter bestimmten Umständen kann SET PASSWORD in Serverprotokollen oder auf der Clientseite in einer Verlaufsdatei wie ~/.mysql_history aufgezeichnet werden, was bedeutet, dass Klartext-Passwörter von jedem gelesen werden können, der Zugriff auf diese Informationen hat., Informationen zu den Bedingungen, unter denen dies für die Serverprotokolle geschieht und wie diese gesteuert werden, finden Sie in Abschnitt 6.1.2.3, „Kennwörter und Protokollierung“. Ähnliche Informationen zur clientseitigen Protokollierung finden Sie in Abschnitt 4.5.1.3, „MySQL-Client-Protokollierung“.,p> SET PASSWORD kann mit oder ohne eine FOR – Klausel verwendet werden, die explizit ein Benutzerkonto benennt:

    • Mit einer FOR user – Klausel legt die Anweisung das Kennwort für das benannte Konto fest, das vorhanden sein muss:

      SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
    • Ohne die Klausel FOR user legt die Anweisung das Kennwort für den aktuellen Benutzer fest:

      SET PASSWORD = 'auth_string';

      Jeder Client, der eine Verbindung zum Server über ein gleichnamiges Konto herstellt, kann das Kennwort für dieses Konto ändern., (Insbesondere können Sie Ihr eigenes Passwort ändern.) Um zu sehen, für welches Konto der Server Sie authentifiziert hat, rufen Sie die Funktion CURRENT_USER() auf:

      SELECT CURRENT_USER();

    Wenn eineFOR user – Klausel angegeben ist, verwendet der Kontoname das in Abschnitt 6.2.4, „Kontonamen angeben“, beschriebene Format. Beispiel:

    SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';

    Der Hostname-Teil des Kontonamens ist standardmäßig '%', wenn er weggelassen wird.,

    SET PASSWORD interpretiert die Zeichenfolge als Klartext-Zeichenfolge, übergibt sie an das dem Konto zugeordnete Authentifizierungs-Plugin und speichert das vom Plugin zurückgegebene Ergebnis in der Kontozeile in der Systemtabelle mysql.user. (Das Plugin hat die Möglichkeit, den Wert in das erwartete Verschlüsselungsformat zu hashen. Das Plugin kann den angegebenen Wert verwenden, in diesem Fall tritt kein Hashing auf.,)

    Das Festlegen des Kennworts für ein benanntes Konto (mit einerFOR – Klausel) erfordert dieUPDATE – Berechtigung für dasmysql – Systemschema. Das Festlegen des Passworts für sich selbst (für ein nicht-anonymes Konto ohne FOR Klausel) erfordert keine besonderen Berechtigungen.,

    Anweisungen, die sekundäre Kennwörter ändern, erfordern folgende Berechtigungen:

  • Die APPLICATION_PASSWORD_ADMIN – Berechtigung ist erforderlich, um die RETAIN CURRENT PASSWORD – Klausel für SET PASSWORD – Anweisungen zu verwenden, die für Ihr eigenes Konto gelten. Das Privileg ist erforderlich, um Ihr eigenes sekundäres Passwort zu manipulieren, da die meisten Benutzer nur ein Passwort benötigen.,

  • Wenn ein Konto sekundäre Kennwörter für alle Konten manipulieren darf, sollte es die Berechtigung CREATE USER anstelle von APPLICATION_PASSWORD_ADMINerhalten.

  • Wenn dieread_only – Systemvariable aktiviert ist, benötigtSET PASSWORD dieCONNECTION_ADMIN – Berechtigung (oder die veralteteSUPER – Berechtigung) zusätzlich zu allen anderen erforderlichen Berechtigungen.

    Weitere Informationen zum Festlegen von Kennwörtern und Authentifizierungs-Plugins finden Sie in Abschnitt 6.2.,14, “ Zuweisen von Kontokennwörtern „und Abschnitt 6.2.17,“Steckbare Authentifizierung“.

    Share

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.