13.7.1.10 NASTAVIT HESLO Prohlášení
SET PASSWORD prohlášení přiřadí heslo k MySQL účtu uživatele. Heslo může být buď výslovně uvedeno v prohlášení, nebo náhodně generované MySQL. Prohlášení může také obsahovat klauzuli o ověření hesla, která určuje aktuální heslo účtu, které má být nahrazeno, a klauzuli, která spravuje, zda má účet sekundární heslo., ' a auth_string'' každý představuje cleartext (nešifrované) heslo.current_auth_string'
Spíše než pomocí SET PASSWORD přiřadit hesla ALTER USER je preferovaný prohlášení za úvahu změny, včetně přiřazení hesla., Například:
ALTER USER user IDENTIFIED BY 'auth_string';
Klauzule pro random generace heslo, ověření hesla, a sekundární heslo platí pouze pro účty, které používají autentizační plugin, který ukládá přihlašovací údaje interně pro MySQL. U účtů, které používají plugin, který provádí ověřování proti systému pověření, který je externí pro MySQL, musí být správa hesel řešena externě i proti tomuto systému. Další informace o interním úložišti pověření naleznete v části 6.2.15, „Správa hesel“.,
REPLACE ' klauzule provádí ověření hesla a je k dispozici od MySQL 8.0.13. Pokud dané:current_auth_string'
-
REPLACEurčuje účet aktuální heslo, které mají být nahrazeny, jako cleartext (nešifrované) řetězec. -
klauzule musí být uvedena, pokud jsou pro zadání aktuálního hesla vyžadovány změny hesla pro účet, jako ověření, že uživatel, který se pokouší provést změnu, skutečně zná aktuální heslo.,
-
klauzule je volitelná, pokud změny hesla pro účet mohou, ale nemusí specifikovat aktuální heslo.
-
příkaz selže, pokud je klauzule uvedena, ale neodpovídá aktuálnímu heslu, i když je klauzule volitelná.
-
REPLACElze zadat pouze při změně hesla účtu pro aktuálního uživatele.
další informace o ověření hesla zadáním aktuálního hesla, viz Bod 6.2.15, „Správa Heslo“.,
klauzuleRETAIN CURRENT PASSWORD implementuje schopnost dvojího hesla a je k dispozici od MySQL 8.0.14. Pokud dané:
-
RETAIN CURRENT PASSWORDzachovává účet aktuální heslo jako své sekundární heslo, které nahradí všechny existující sekundární heslo. Nové heslo se stává primárním heslem, ale klienti mohou pomocí účtu připojit k serveru pomocí primárního nebo sekundárního hesla., (Výjimka: Pokud nové heslo zadané pomocíSET PASSWORDprohlášení je prázdný, sekundární heslo se stává prázdný, i kdyžRETAIN CURRENT PASSWORDje dáno.) -
Pokud zadáte
RETAIN CURRENT PASSWORDpro účet, který má prázdné primární heslo, příkaz selže. -
pokud má účet sekundární heslo a změníte jeho primární heslo bez zadání
RETAIN CURRENT PASSWORD, sekundární heslo zůstává nezměněno.
Další informace o používání duální hesla, viz bod 6.2.,15, „Správa Hesel“.
SET PASSWORD povolení auth_option syntaxí:
-
= 'auth_string'Přiřadí účet dané doslovný heslo.
-
TO RANDOMpřiřadí účtu heslo náhodně generované MySQL. V prohlášení také vrátí cleartext hesla v důsledku nastaven tak, aby bylo k dispozici pro uživatele nebo aplikace spuštění prohlášení.,
podrobnosti o sadě výsledků a charakteristikách náhodně generovaných hesel naleznete v části generování náhodných hesel.
generování náhodných hesel je k dispozici od MySQL 8.0.18.
v některých případech SET PASSWORD mohou být zaznamenány v protokolech serveru nebo na straně klienta v historii souboru jako ~/.mysql_history, což znamená, že cleartext hesla může být přečíst každý, kdo má přístup pro čtení těchto informací., Informace o podmínkách, za kterých k tomu dochází pro protokoly serveru a jak je ovládat, naleznete v části 6.1.2.3 „hesla a protokolování“. Podobné informace o protokolování na straně klienta naleznete v části 4.5.1.3 „protokolování klienta mysql“.,p> SET PASSWORD může být použit s nebo bez FOR ustanovení, které výslovně jména uživatelského účtu:
-
FORklauzule, příkaz nastaví heslo pro jménem účtu, který musí existovat:userSET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string'; -
bez
FORklauzule, příkaz nastaví heslo pro aktuálního uživatele:userSET PASSWORD = 'auth_string';každý klient, který se připojuje k serveru pomocí neanonymní účet, můžete změnit heslo pro tento účet., (Zejména můžete změnit své vlastní heslo.) Chcete-li zjistit, který účet na serveru ověřené vás, jak vyvolat
CURRENT_USER()funkce:SELECT CURRENT_USER();
Pokud FOR doložky je uveden název účtu používá formát je popsáno v kapitole 6.2.4, „Upřesní Názvy Účtů“. Například: user
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
název hostitele část názvu účtu, pokud je vynechán, výchozí hodnoty '%'.,
SET PASSWORD interpretuje řetězec jako cleartext řetězec, předá jej k ověření plugin spojené s účtem, a výsledek uloží vrácené plugin na účtu řádek v mysql.user systémové tabulky. (Plugin má možnost hash hodnotu do šifrovacího formátu, který očekává. Plugin může použít hodnotu, jak je uvedeno, v takovém případě nedochází k hašování.,)
Nastavení hesla pro pojmenované účet (s FOR doložka) vyžaduje UPDATE oprávnění pro mysql systém schématu. Nastavení hesla pro sebe (pro neanonymní účet bez klauzule FOR) nevyžaduje žádná zvláštní oprávnění.,
příkazy, které změnit sekundární hesla vyžadují tato oprávnění:
-
APPLICATION_PASSWORD_ADMINoprávnění je nutné použítRETAIN CURRENT PASSWORDklauzule proSET PASSWORDpříkazy, které se vztahují na váš vlastní účet. Oprávnění je vyžadováno pro manipulaci s vlastním sekundárním heslem, protože většina uživatelů vyžaduje pouze jedno heslo., -
Pokud účet je povoleno manipulovat sekundární hesla pro všechny účty, to by měla být samozřejmost
CREATE USERvýsadou spíše nežAPPLICATION_PASSWORD_ADMIN.
Když read_only systémové proměnné je povoleno, SET PASSWORD vyžaduje CONNECTION_ADMIN oprávnění (nebo zastaralé SUPER oprávnění), navíc k jakékoli jiné požadované oprávnění.
Další informace o nastavení hesel a autentizačních pluginů naleznete v části 6.2.,14, “ přiřazení hesel účtu „a oddíl 6.2.17,“Pluggable Authentication“.