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
'
-
REPLACE
urč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á.
-
REPLACE
lze 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 PASSWORD
zachová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 PASSWORD
prohlášení je prázdný, sekundární heslo se stává prázdný, i kdyžRETAIN CURRENT PASSWORD
je dáno.) -
Pokud zadáte
RETAIN CURRENT PASSWORD
pro úč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 RANDOM
př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:
-
FOR
klauzule, příkaz nastaví heslo pro jménem účtu, který musí existovat:user
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
bez
FOR
klauzule, příkaz nastaví heslo pro aktuálního uživatele:user
SET 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_ADMIN
oprávnění je nutné použítRETAIN CURRENT PASSWORD
klauzule proSET PASSWORD
pří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 USER
vý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“.