13.7.1.10 SÆT PASSWORD Erklæring
SET PASSWORD erklæring tildeler en adgangskode til en MySQL bruger konto. Adgangskoden kan være enten eksplicit angivet i sætningen eller tilfældigt genereret af Mys .l. Erklæringen kan også indeholde en pass .ord-verifikationsklausul, der angiver den konto nuværende adgangskode, der skal udskiftes, og en klausul, der styrer, om en konto har en sekundær adgangskode., ' og auth_string '' repræsenterer hver en klar tekst (ikke-krypteret) adgangskode.current_auth_string '
i Stedet for at bruge SET PASSWORD for at tildele adgangskoder, ALTER USER er foretrukket opgørelse for konto ændringer, herunder tildeling af adgangskoder., For eksempel:
ALTER USER user IDENTIFIED BY 'auth_string';
Klausuler for random password generering, password kontrol, og sekundære adgangskoder gælder kun for de konti, bruge en godkendelse plugin der gemmer legitimationsoplysninger internt til MySQL. For konti, der bruger et plugin, der udfører godkendelse mod et legitimationssystem, der er eksternt til Mys .l, skal adgangskodestyring også håndteres eksternt mod dette system. Yderligere oplysninger om intern opbevaring af legitimationsoplysninger findes i afsnit 6.2.15, “adgangskodehåndtering”.,
REPLACE ' klausul udfører password kontrol og er tilgængelig som af MySQL 8.0.13. Hvis givet:current_auth_string'
-
REPLACEangiver den konto aktuelle adgangskode, der skal udskiftes, som en clearte .t (ikke-krypteret) streng. -
klausulen skal angives, hvis adgangskodeændringer for kontoen er nødvendige for at angive den aktuelle adgangskode, som bekræftelse af, at den bruger, der forsøger at foretage ændringen, faktisk kender den aktuelle adgangskode.,
-
klausulen er valgfri, hvis adgangskoden ændres for kontoen, men ikke behøver at angive den aktuelle adgangskode.
-
sætningen mislykkes, hvis klausulen er angivet, men ikke stemmer overens med den aktuelle adgangskode, selvom klausulen er valgfri.
-
REPLACEkan kun angives, når du ændrer kontoadgangskoden for den aktuelle bruger.
For mere information om password kontrol ved at angive den aktuelle adgangskode, se Afsnit 6.2.15, “Password”.,
RETAIN CURRENT PASSWORD-klausulen implementerer dobbelt adgangskodefunktion og er tilgængelig fra Mys .l 8.0.14. Hvis givet:
-
RETAIN CURRENT PASSWORDbevarer en konto nuværende adgangskode som sin sekundære adgangskode, erstatter enhver eksisterende sekundær adgangskode. Den nye adgangskode bliver den primære adgangskode, men klienter kan bruge kontoen til at oprette forbindelse til serveren ved hjælp af enten den primære eller sekundære adgangskode., (Undtagelse: Hvis den nye adgangskode, der er angivet afSET PASSWORD– sætningen, er tom, bliver den sekundære adgangskode også tom, selvomRETAIN CURRENT PASSWORDer angivet.) -
Hvis du angiver
RETAIN CURRENT PASSWORDfor en konto, der har en tom primær adgangskode, mislykkes erklæringen. -
Hvis en konto har en sekundær adgangskode, og du kan ændre dens primære adgangskode, uden at angive
RETAIN CURRENT PASSWORD, den sekundære adgangskode forbliver uændret.
For mere information om brug af dobbelte adgangskoder, se afsnit 6.2.,15, “Pass Passwordord Management”.
SET PASSWORD tilladelser disse auth_option syntaks:
-
= 'auth_string'Tildeler den konto givet bogstavelig adgangskode.
-
TO RANDOMtildeler kontoen en adgangskode tilfældigt genereret af Mys .l. Erklæringen returnerer også clearte .t-adgangskoden i et resultatsæt for at gøre det tilgængeligt for brugeren eller applikationen, der udfører erklæringen.,
for detaljer om resultatsættet og karakteristika for tilfældigt genererede adgangskoder, se tilfældig Adgangskodegenerering.
tilfældig adgangskodegenerering er tilgængelig fra Mys .l 8.0.18.
Under nogle omstændigheder SET PASSWORD kan blive optaget i server logs eller på klientsiden i en historie-fil som f.eks. ~/.mysql_history hvilket betyder, at cleartext passwords kan læses af enhver, der har læse-adgang til disse oplysninger., For oplysninger om de betingelser, hvorunder dette sker for serverlogfiler og hvordan man styrer det, se Afsnit 6.1.2.3, “adgangskoder og logning”. For lignende oplysninger om klientsiden logning, Se afsnit 4.5.1.3, “Mys .l klient logning”.,p> SET PASSWORD kan bruges med eller uden en FOR bestemmelse, der udtrykkeligt nævner en brugerkonto:
-
Med
FORklausul, at den erklæring, der angiver adgangskoden for den angivne konto, der skal findes:userSET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string'; -
uden
FORklausul, at den erklæring, der angiver adgangskoden for den aktuelle bruger:userSET PASSWORD = 'auth_string';Enhver klient der forbinder til serveren ved hjælp af en nonanonymous konto, der kan ændre adgangskoden for denne konto., (Især kan du ændre din egen adgangskode.) For at se, hvilken konto serveren har godkendt dig som påberåbe
CURRENT_USER()funktion:SELECT CURRENT_USER();
Hvis FOR klausulen er givet, at den konto, navn, bruger-format er beskrevet i Afsnit 6.2.4, “Angive kontonavne”. For eksempel: user
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
værtsnavndelen af kontonavnet, hvis udeladt, er som standard '%'.,
SET PASSWORD fortolker strengen som en klartekst-streng, sender det til godkendelse plugin, der er forbundet med kontoen, og gemmer resultatet, som returneres af plugin på kontoen række i mysql.user system bordet. (Dette plugin får mulighed for at hash værdien i kryptering format det forventer. Dette plugin kan bruge værdien som angivet, i hvilket tilfælde ingen hashing sker.,)
Indstilling af adgangskoden til en navngiven konto (med en FOR klausul) kræver UPDATE privilegium for de mysql system-skema. Indstilling af adgangskoden til dig selv (for en ikke-anonym konto uden FOR klausul) kræver ingen særlige privilegier.,
Erklæringer om, at ændre sekundære adgangskoder kræve, at disse privilegier:
-
APPLICATION_PASSWORD_ADMINprivilegium er forpligtet til at brugeRETAIN CURRENT PASSWORDklausul forSET PASSWORDerklæringer, der gælder for din egen regning. Privilegiet er påkrævet for at manipulere din egen sekundære adgangskode, fordi de fleste brugere kun kræver en adgangskode., -
Hvis en konto er tilladt at manipulere sekundære adgangskoder til alle konti, der bør gives
CREATE USERprivilegier snarere endAPPLICATION_PASSWORD_ADMIN.
Når read_only system-variablen er aktiveret, SET PASSWORD kræver CONNECTION_ADMIN privilegium (eller deprecated SUPER privilegium), i tillæg til eventuelle andre nødvendige privilegier.
For yderligere oplysninger om indstilling af adgangskoder og godkendelsesplugins, se afsnit 6.2.,14, “tildeling af kontoadgangskoder”, og afsnit 6.2.17,”pluggbar godkendelse”.