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., '
und auth_string
''
stellen jeweils ein Klartext (unverschlüsselt) Passwort dar.current_auth_string
'
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';
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 '
Klausel führt die Passwortüberprüfung durch und ist ab MySQL 8.0.13 verfügbar. Wenn gegeben:current_auth_string
'
-
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 AnweisungSET PASSWORD
angegebene neue Kennwort leer ist, wird auch das sekundäre Kennwort leer, selbst wennRETAIN 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.
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
– Klausel legt die Anweisung das Kennwort für das benannte Konto fest, das vorhanden sein muss:user
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
Ohne die Klausel
FOR
legt die Anweisung das Kennwort für den aktuellen Benutzer fest:user
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
– Klausel angegeben ist, verwendet der Kontoname das in Abschnitt 6.2.4, „Kontonamen angeben“, beschriebene Format. Beispiel: user
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_ADMIN
erhalten.
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“.