13.7.1.10 ange lösenord uttalande
SET PASSWORD uttalande tilldelar ett lösenord till en MySQL användarkonto. Lösenordet kan antingen uttryckligen anges i uttalandet eller slumpmässigt genereras av MySQL. Uttalandet kan också innehålla en klausul om lösenordsverifiering som anger det aktuella lösenordet för kontot som ska ersättas och en klausul som hanterar om ett konto har ett sekundärt lösenord., ' ochauth_string'' representerar varje cleartext (okrypterat) lösenord.current_auth_string'
i stället för att användaSET PASSWORD för att tilldela lösenord ärALTER USER det föredragna uttalandet för kontoändringar, inklusive att tilldela lösenord., Till exempel:
ALTER USER user IDENTIFIED BY 'auth_string';
klausuler för slumpmässig lösenordsgenerering, lösenordsverifiering och sekundära lösenord gäller endast konton som använder ett autentiseringsinsticksprogram som lagrar autentiseringsuppgifter internt till MySQL. För konton som använder ett plugin som utför autentisering mot ett autentiseringssystem som är externt till MySQL, måste lösenordshantering hanteras externt mot det systemet också. Mer information om intern inloggningsuppgifter finns i avsnitt 6.2.15, ”lösenordshantering”.,
REPLACE ' utför lösenordsverifiering och är tillgänglig från och med MySQL 8.0.13. Om det ges: current_auth_string'
-
REPLACEanger det aktuella lösenordet för kontot som ska ersättas, som en cleartext (okrypterad) sträng. -
klausulen måste anges om lösenord ändras för kontot krävs för att ange det aktuella lösenordet, som verifiering att användaren som försöker göra ändringen faktiskt känner till det aktuella lösenordet.,
-
klausulen är valfri om lösenordet ändras för kontot men behöver inte ange det aktuella lösenordet.
-
uttalandet misslyckas om klausulen ges men inte matchar det aktuella lösenordet, även om klausulen är valfri.
-
REPLACEkan endast anges när du ändrar kontolösenordet för den aktuella användaren.
För mer information om lösenordsverifiering genom att ange det aktuella lösenordet, se avsnitt 6.2.15, ”lösenordshantering”.,
klausulenRETAIN CURRENT PASSWORD implementerar dubbla lösenord och är tillgänglig från och med MySQL 8.0.14. Om det ges:
-
RETAIN CURRENT PASSWORDbehåller ett konto nuvarande lösenord som dess sekundära lösenord, ersätter alla befintliga sekundära lösenord. Det nya lösenordet blir det primära lösenordet, men klienter kan använda kontot för att ansluta till servern med antingen det primära eller sekundära lösenordet., (Undantag: om det nya lösenordet som anges avSET PASSWORD– satsen är tomt blir det sekundära lösenordet också tomt, även omRETAIN CURRENT PASSWORDges.) -
om du anger
RETAIN CURRENT PASSWORDför ett konto som har ett tomt primärt lösenord misslyckas uttalandet. -
om ett konto har ett sekundärt lösenord och du ändrar dess primära lösenord utan att ange
RETAIN CURRENT PASSWORDförblir det sekundära lösenordet oförändrat.
Mer information om användning av dubbla lösenord finns i avsnitt 6.2.,15, ”Lösenordshantering”.
SET PASSWORD tillåter dessaauth_option syntaxer:
-
= 'auth_string'tilldelar kontot det angivna bokstavliga lösenordet.
-
TO RANDOMtilldelar kontot ett lösenord som slumpmässigt genereras av MySQL. Uttrycket returnerar också cleartext-lösenordet i en resultatuppsättning för att göra det tillgängligt för användaren eller programmet som utför uttalandet.,
För mer information om resultatuppsättningen och egenskaperna hos slumpmässigt genererade lösenord, Se slumpmässig lösenordsgenerering.
slumpmässig lösenordsgenerering är tillgänglig från och med MySQL 8.0.18.
under vissa omständigheter kanSET PASSWORD spelas in i serverloggar eller på klientsidan i en historikfil som~/.mysql_history, vilket innebär att cleartext-lösenord kan läsas av vem som helst som har läst informationen., För information om de förhållanden under vilka detta inträffar för serverloggarna och hur man styr det, se avsnitt 6.1.2.3, ”lösenord och loggning”. För liknande information om klientsidan loggning, se avsnitt 4.5.1.3, ”MySQL Client Logging”.,p> SET PASSWORD kan användas med eller utan en FOR klausul som uttryckligen namnger ett användarkonto:
-
med en
FORanger uttalandet lösenordet för det namngivna kontot, vilket måste finnas:userSET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string'; -
utan
FORanger satsen lösenordet för den aktuella användaren:userSET PASSWORD = 'auth_string';alla klienter som ansluter till servern med ett nonanonymous-konto kan ändra lösenordet för det kontot., (I synnerhet kan du ändra ditt eget lösenord.) För att se vilket konto servern autentiserade dig som, åberopa funktionen
CURRENT_USER():SELECT CURRENT_USER();
om en FOR ges, använder kontonamnet det format som beskrivs i avsnitt 6.2.4, ”specificera kontonamn”. Till exempel: user
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
värdnamnet del av kontonamnet, om utelämnas, standardvärden till '%'.,
SET PASSWORD tolkar strängen som en cleartext-sträng, skickar den till autentiseringsinsticksprogrammet som är associerat med kontot och lagrar resultatet som returneras av insticksprogrammet i kontoraden i systemtabellen mysql.user. (Insticksprogrammet ges möjlighet att hash värdet i krypteringsformatet det förväntar sig. Insticksprogrammet kan använda värdet som angivet, i vilket fall ingen hash inträffar.,)
ställa in lösenordet för ett namngivet konto (med enFOR klausul) kräverUPDATE privilegium för systemschematmysql. Att ställa in lösenordet för dig själv (för ett nonanonymous-konto utan FOR – klausul) kräver inga särskilda privilegier.,
uttalanden som ändrar sekundära lösenord kräver dessa privilegier:
-
behörigheten
APPLICATION_PASSWORD_ADMINmåste använda klausulenRETAIN CURRENT PASSWORDförSET PASSWORDuttalanden som gäller för ditt eget konto. Privilegiet krävs för att manipulera ditt eget sekundära lösenord eftersom de flesta användare behöver bara ett lösenord., -
om ett konto ska tillåtas att manipulera sekundära lösenord för alla konton ska det beviljas behörigheten
CREATE USERsnarare änAPPLICATION_PASSWORD_ADMIN.
När systemvariabeln read_onlyär aktiverad, kräver SET PASSWORDbehörigheten CONNECTION_ADMIN(eller den föråldrade SUPER – behörigheten), förutom andra privilegier som krävs.
För ytterligare information om inställning av lösenord och autentiseringsinsticksprogram, se avsnitt 6.2.,14, ”tilldela kontolösenord” och avsnitt 6.2.17, ”Pluggable Authentication”.