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
'
-
REPLACE
anger 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.
-
REPLACE
kan 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 PASSWORD
behå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 PASSWORD
ges.) -
om du anger
RETAIN CURRENT PASSWORD
fö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 PASSWORD
fö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 RANDOM
tilldelar 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
FOR
anger uttalandet lösenordet för det namngivna kontot, vilket måste finnas:user
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
utan
FOR
anger satsen lösenordet för den aktuella användaren:user
SET 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_ADMIN
måste använda klausulenRETAIN CURRENT PASSWORD
förSET PASSWORD
uttalanden 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 USER
snarare änAPPLICATION_PASSWORD_ADMIN
.
När systemvariabeln read_only
är aktiverad, kräver SET PASSWORD
behö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”.