Jak jste si možná všimli, budete vyzváni, abyste povolili VALIDATE PASSWORD
při nastavení hesla pro kořen MySQL uživatel. Pokud je povolena, komponenta Validate Password automaticky zkontroluje sílu daného hesla a vynutí uživatele, aby nastavili pouze hesla, která jsou dostatečně bezpečná. Pokud zadáte slabé heslo, narazíte na chybu, jako je tato – ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
.
Technicky vzato se ve skutečnosti nejedná o chybu. Toto je vestavěný bezpečnostní mechanismus, který upozorňuje uživatele, aby poskytovali pouze silná hesla na základě aktuálních požadavků politiky hesel.
Dovolte mi ukázat vám příklad. Přihlašuji se k serveru MySQL jako root
uživatel pomocí příkazu:
$ mysql -u root -p
Vytvořte databázového uživatele se slabým heslem:
mysql> create user 'ostechnix'@'localhost' identified by 'mypassword';
A narazím na následující chybu:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Vidět? Validate Password
komponenta mi neumožňuje vytvořit uživatele se slabým heslem (tj. mypassword
v tomto případě).
Tato chyba se bude zobrazovat, dokud heslo nebude splňovat požadavky aktuálních zásad pro hesla nebo dokud nezakážete Validate Password
součástka. Jak to udělat, uvidíme v následující části.
Oprava – CHYBA MySQL 1819 (HY000):Vaše heslo nesplňuje aktuální požadavky zásad
Při Validate Password
se vynucují tři úrovně zásad ověřování hesla plugin je povolen:
- NÍZKÁ Délka>=8 znaků.
- STŘEDNÍ Délka>=8, číslice, velká a malá písmena a speciální znaky.
- STRONG Délka>=8, číslice, velká a malá písmena, speciální znaky a soubor slovníku.
Na základě těchto úrovní zásad musíte nastavit vhodné heslo. Pokud je například zásada ověřování hesla nastavena na Střední, musíte nastavit heslo, které má alespoň 8 znaků včetně číslic, malých písmen, velkých písmen a speciálních znaků.
Nejprve musíme najít aktuální úroveň zásad pro hesla. Chcete-li tak učinit, spusťte následující příkaz k zobrazení systémových proměnných modulu Password Validation Plugin:
mysql> SHOW VARIABLES LIKE 'validate_password%';
Ukázkový výstup:
+--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.09 sec)

Jak vidíte, aktuálně vynucená úroveň hesla je Střední . Naše heslo by tedy mělo mít 8 znaků s číslem, malými a velkými písmeny a speciálními znaky.
Nastavím toto heslo - Password123#@!
pomocí příkazu:
mysql> create user 'ostechnix'@'localhost' identified by 'Password123#@!'; Query OK, 0 rows affected (0.36 sec)

Vidět? Už to funguje! Aby bylo možné opravit "ERROR 1819 (HY000)...
", musíte zadat heslo podle aktuálních zásad ověřování hesla.
Změňte zásady ověřování hesla v MySQL
Můžete také vyřešit "ERROR 1819 (HY000)...
" nastavením zásad pro hesla nižší úrovně.
Chcete-li tak učinit, spusťte z příkazového řádku mysql následující příkaz:
mysql> SET GLOBAL validate_password.policy = 0;
Nebo,
mysql> SET GLOBAL validate_password.policy=LOW;
Poté zkontrolujte, zda byla zásada ověřování hesla změněna na nízkou hodnotu:
mysql> SHOW VARIABLES LIKE 'validate_password%';
Ukázkový výstup:
+--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | LOW | | validate_password.special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.00 sec)
Nyní můžete vytvořit uživatele se slabým heslem jako níže:
mysql> create user 'senthil'@'localhost' identified by 'password';

Chcete-li se vrátit zpět k politice STŘEDNÍ úrovně, jednoduše spusťte tento příkaz z řádku mysql:
mysql> SET GLOBAL validate_password.policy=MEDIUM;
Pokud se zásady hesla nezmění, ukončete výzvu mysql a restartujte službu mysql z okna Terminálu:
$ sudo systemctl restart mysql
Nyní by to mělo fungovat.
Pozor: Jeden z našich čtenářů poukázal na to, že v následujícím příkazu je překlep:
mysql> SET GLOBAL validate_password.policy=LOW;
Mělo by to být:
mysql> SET GLOBAL validate_password_policy=LOW;
Všimněte si podtržítka ve výše uvedeném příkazu. Protože jsem smazal nastavení, nemám žádný způsob, jak ověřit tento příkaz. Předpokládám však, že příkaz byl v novějších verzích MySQL změněn.
Zakázat zásady ověřování hesla
Pokud chcete vytvářet uživatele se slabým heslem, jednoduše deaktivujte Validate Password
komponentu úplně a po vytvoření uživatelů ji znovu povolte.
Přihlaste se k serveru MySQL:
$ mysql -u root -p
Chcete-li dočasně deaktivovat komponentu Validate Password, spusťte z příkazového řádku MySQL následující příkaz:
mysql> UNINSTALL COMPONENT "file://component_validate_password";
Vytvořte uživatele s libovolným heslem podle vašeho výběru:
mysql> create user 'kumar'@'localhost' identified by '123456';
Nakonec povolte komponentu Ověřit heslo:
mysql> INSTALL COMPONENT "file://component_validate_password";

Osobně nedoporučuji měnit politiku na nižší úroveň nebo deaktivovat politiku hesel. Ať už se jedná o uživatele databáze nebo běžného uživatele, vždy používejte silné heslo s více než 8 znaky včetně číslic, malých a velkých písmen a mezer.
Závěr
V této příručce jsme se dozvěděli o jedné z běžných chyb MySQL – ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
a jak to opravit v Linuxu. Také jsme se naučili, jak deaktivovat zásady hesel, aby byla povolena slabá hesla.
Související čtení:
- Nainstalujte Apache, MySQL, PHP (LAMP Stack) na Ubuntu 20.04 LTS
- Nainstalujte Nginx, MySQL, PHP (LEMP Stack) na Ubuntu 20.04 LTS