Tato příručka vysvětluje, proč a jak změnit metodu ověřování pro uživatele root MySQL na Ukládání do mezipaměti SHA-2 Pluggable Authentication nebo Native Pluggable Authentication metoda v Ubuntu.
Úvod
I když máte heslo pro nastavení kořenového adresáře MySQL uživatel, stále se nemůžete ověřit u databázového serveru jako root
uživatele s heslem. Protože kořenový uživatel MySQL je nastaven na ověřování pomocí auth_socket
plugin ve výchozím nastavení namísto hesla v systémech Ubuntu s MySQL 5.7 a novějšími verzemi. Proto nemůžete přistupovat k serveru MySQL s uživatelem root a jeho heslem.
I když se pokusíte ověřit jako uživatel root pomocí příkazu:
$ mysql -u root -p
Zobrazí se následující chybová zpráva:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
auth_socket
plugin kontroluje, zda se uživatelské jméno soketu (uživatelské jméno operačního systému) shoduje s uživatelským jménem MySQL zadaným klientským programem na serveru.
Tento plugin se nestará a nepotřebuje heslo. Pouze zkontroluje, zda se uživatel připojuje pomocí soketu UNIX, a poté porovná uživatelské jméno.
Pokud plugin zjistí, že uživatelské jméno operačního systému a uživatelské jméno MySQL jsou stejné, povolí připojení bez dalšího ověřování.
Například pokud existuje uživatel s názvem ostechnix
v operačním systému se bude moci přihlásit k 'ostechnix'@'localhost'
účet v rámci MySQL, pokud je definovaným mechanismem autentizace autentizace soketu Unix. Pokud se uživatelské jméno operačního systému liší od uživatelského jména MySQL, auth_socket
plugin prostě odmítne připojení.
auth_socket
plugin zlepšuje zabezpečení, ale také komplikuje věci, když používáme externí programy jako phpMyAdmin pro přístup k databázovému serveru.
Také uživatelé ověření pomocí auth_socket
plugin se může připojit pouze z místního hostitele přes soubor soketu Unix. Mají omezeno vzdálené připojení. To je důvod, proč musíme změnit metodu ověřování pro uživatele root MySQL v Ubuntu.
1. Změňte metodu ověřování pro kořenového uživatele MySQL v Ubuntu
MySQL poskytuje mnoho autentizačních metod a zásuvných modulů, které tyto metody implementují. V této příručce se zabýváme pouze dvěma pluginy s názvem caching_sha2_password
a mysql_native_password
který implementuje metody zvané Caching SHA-2 Pluggable Authentication a Native Pluggable Authentication resp.
Nejprve uvidíme, jak změnit metodu ověřování pro uživatele root MySQL na caching_sha2_password
.
1.1. Změňte ověřovací plugin na caching_sha2_password
caching_sha2_password
plugin provádí ověřování pomocí hashování hesel SHA-256. V MySQL 8.0 caching_sha2_password
je výchozí autentizační plugin spíše než mysql_native_password
. Poskytuje bezpečnější šifrování hesel, rychlejší ověřování a lepší výkon.
Chcete-li změnit ověřovací plugin, přihlaste se k serveru MySQL pomocí příkazu:
$ sudo mysql
Protože MySQL 8 používá auth_socket
plugin v Ubuntu, výše uvedený příkaz vám umožní přihlásit se k serveru MySQL jako root
uživatel. Zadejte své sudo
heslo k ověření.
Dále vyhledejte aktuální metodu ověřování pro všechny uživatelské účty mysql spuštěním následujícího příkazu na výzvu MySQL:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Ukázkový výstup:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.01 sec)

Jak můžete vidět, uživatel root MySQL používá auth_socket
plugin pro ověřování. Změňme auth_socket
plugin do caching_sha2_password
plugin pomocí ALTER USER
příkaz jako níže.
Upozorňujeme, že pokud jste povolili VALIDATE PASSWORD
plugin při nastavování hesla uživatele root MySQL, musíte zadat silné heslo založené na aktuální politice hesel. Silné heslo by se mělo skládat alespoň z 8 znaků včetně velkého písmene, malého písmene, čísla a speciálního znaku.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Nahraďte Password123#@!
ve výše uvedeném příkazu se silným a jedinečným heslem dle vašeho výběru a poznamenejte si ho, až ho budeme potřebovat.
Dále aktualizujte změny pomocí příkazu:
mysql> FLUSH PRIVILEGES;
Nyní zkontrolujte, zda je aktuální autentizační plugin změněn nebo není pomocí příkazu:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Ukázkový výstup:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | $A$005$z9Lq/%(r l +DDI9wJbql8DWZNRoet2BSwUrIgjq.l7FxRSyMb/OWk4 | caching_sha2_password | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

Metoda ověřování pro uživatele root MySQL byla nastavena na Caching SHA-2 Pluggable Authentication. Od této chvíle se uživatel root MySQL může autentizovat pomocí hesla.
Ukončete výzvu mysql:
mysql> exit
Chcete-li ověřit, zda se uživatel root MySQL může přihlásit pomocí hesla, zadejte následující příkaz:
$ mysql -u root -p
Zadejte heslo uživatele root MySQL:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

I když caching_sha2_password
plugin poskytuje vylepšené bezpečné šifrování a lepší výkon, má určité problémy s kompatibilitou se stávajícími instalacemi MySQL a způsobuje problémy s některými verzemi PHP. Podrobnosti naleznete na tomto odkazu .
Pokud jste narazili na problémy s kompatibilitou nebo pokud klient nebo konektor nepodporuje caching_sha2_password
ověřovací plugin, vrátit se zpět k nativní metodě ověřování, tj. mysql_native_password
jak je popsáno v následující části.
1.2. Změňte ověřovací plugin na mysql_native_password
MySQL obsahuje mysql_native_password
plugin, který implementuje nativní zásuvnou autentizační metodu. Poskytuje autentizaci založenou na metodě hashování hesla.
mysql_native_password
byla výchozí metoda ověřování ve starších verzích MySQL.
Chcete-li změnit na mysql_native_password
plugin, přihlaste se do MySQL jako root
uživatel:
$ mysql -u root -p
Pokud používáte auth_socket
plugin, měli byste zadat následující příkaz pro přihlášení k serveru MySQL jako root
uživatel:
$ sudo mysql
Chcete-li nastavit mysql_native_password
plugin jako výchozí ověřování pro uživatele root MySQL, spusťte následující příkaz na řádku MySQL.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';
Aktualizujte změny pomocí příkazu:
mysql> FLUSH PRIVILEGES;
Nyní zkontrolujte, zda je metoda ověřování změněna nebo není pomocí příkazu:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Ukázkový výstup:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2 yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | *B6032809F2C8CE37BDF05DEFE5BA30D6DC74DC68 | mysql_native_password | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

Hotovo! Změnili jsme metodu ověřování pro uživatele root MySQL na Native Pluggable Authentication.
Závěr
V této příručce jsme se podívali na to, proč musíme změnit metodu ověřování pro uživatele root MySQL v systémech Ubuntu s MySQL 5.7 a novějšími verzemi. Také jsme viděli, jak změnit auth_socket
plugin do caching_sha2_password
nebo mysql_native_password
plugin pro uživatele root MySQL v operačním systému Ubuntu.
Související čtení:
- Jak resetovat heslo uživatele root v MySQL 8 na Ubuntu Linux