GNU/Linux >> Znalost Linux >  >> Ubuntu

Změňte metodu ověřování pro kořenového uživatele MySQL v Ubuntu

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

Ubuntu
  1. Staňte se uživatelem root v Ubuntu 22.04 – průvodce krok za krokem?

  2. Jak nainstalovat MySQL na Ubuntu 18.04 LTS

  3. jiný shell pro uživatele root a uživatele bez root

  1. Jak změnit Sudo nebo Root heslo v Ubuntu

  2. Jak změnit na uživatele root v Ubuntu 22.04

  3. Změnit výchozí cestu uživatelských složek?

  1. Jak změnit uživatelské heslo v Ubuntu

  2. Jak změnit heslo root v Ubuntu Linux

  3. Změňte metodu ověřování pro kořenového uživatele MySQL v Ubuntu