GNU/Linux >> Znalost Linux >  >> Linux

Jak změnit/resetovat kořenové heslo MySQL nebo MariaDB

Nedávno jsem na svém webu změnil heslo uživatele root MySQL. Pak mě napadlo, co se stane, když zapomenu kořenové heslo MySQL?

Existuje snadný způsob, jak resetovat kořenové heslo MySQL nebo MariaDB?

Prohlédl jsem si několik online tutoriálů, ale žádný z nich se nezdá být dostatečně úplný, abych rozlišil mezi změnou hesla a resetováním hesla. Zdálo se, že jim chybí podrobnosti o tabulce MySQL, kde jsou uložena uživatelská hesla a ve kterých sloupcích.

V tomto tutoriálu se naučíme následující témata.

  1. Jak změnit heslo kořenového adresáře MySQL/MariaDB
  2. Jak resetovat kořenové heslo MySQL/MariaDB

Pokusím se to udělat co nejúplnější a doufejme, že po přečtení tohoto úkolu snadno projdete, aniž byste potřebovali další pomoc.

Jaký je rozdíl mezi změnou a resetováním hesla?

Pokud znáte heslo root, můžete se připojit k databázi jako uživatel root a poté heslo velmi snadno změnit. Můžete změnit heslo uživatele root stejně jako jakékoli jiné uživatelské heslo.

Pokud jste zapomněli heslo root, znamená to, že se nemůžete připojit k serveru MySQL jako uživatel root. Uživatel root má nejvyšší oprávnění a nemůžete změnit jeho heslo prostřednictvím jiných účtů. V tomto případě musíme provést několik dalších kroků, abychom resetovali kořenové heslo MySQL.

Kroky pro MySQL a MariaDB jsou stejné?

MariaDB je postavena na MySQL. Je velmi populární pro požadavky na webhosting. Ve skutečnosti JournalDev a všechny mé webové stránky používají databázi MariaDB. Jakýkoli příkaz, který funguje pro MySQL, bude fungovat i pro MariaDB.

Jedinou úpravou v příkazech, které možná budete muset provést, je zastavení a spuštění serveru MySQL. Pro tento tutoriál používám Ubuntu a používám systemctl ke spuštění/zastavení služeb. Můžete také použít /etc/init.d/mysql provádět stejné operace.

Pokud používáte operační systém Windows, použijte prosím mysqld nebo mysqladmin z příkazového řádku ke spuštění nebo zastavení serveru MySQL. Jsou umístěny ve složce instalačního koše MySQL.

Jak změnit kořenové heslo MySQL nebo MariaDB

Používám databázi MariaDB, můžeme použít volbu –version, abychom zjistili její verzi.

# mariadb --version
mariadb  Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
# 

1. Připojte se k MySQL jako uživatel root

# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

2. Změňte heslo a hodnotu authentication_string v tabulce mysql.user

Uživatelská hesla MySQL jsou uložena v zašifrované podobě v tabulce mysql.user password a authentication_string. Můžeme použít funkci PASSWORD() k převodu řetězce prostého textu na zašifrovanou hodnotu a nastavení těchto sloupců.

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *E510A8BC6807F8BF4913D893620792C432FCBA5B | *E510A8BC6807F8BF4913D893620792C432FCBA5B |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *6F168491676C70E51CB8D0F14D6B581D1322A77A | *6F168491676C70E51CB8D0F14D6B581D1322A77A |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
root@localhost:~# 

Pojďme pochopit, co se děje ve výše uvedených dotazech.

  • Především měníme databázi na „mysql“
  • Poté nastavíme hodnoty sloupců ‘authentication_string’ a ‘password’ pro uživatele ‘root’@’localhost’ s novým heslem.
  • Potom znovu načteme tabulky grantů pomocí příkazu FLUSH PRIVILEGES.
  • Pak ukončete relaci MySQL. Heslo uživatele root bylo úspěšně změněno.

POZNÁMKA :Zkusil jsem použít ALTER USER příkaz ke změně hesla uživatele root, ale nefungoval.

MariaDB [mysql]> ALTER USER root@localhost IDENTIFIED BY 'qwerty2022';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER root@localhost IDENTIFIED BY 'qwerty2022'' at line 1
MariaDB [mysql]>

3. Ověřte přihlášení uživatele root pomocí nového hesla

# mysql -uroot -pqwerty2021
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

A je to. Úspěšně jsme změnili uživatelské heslo MySQL/MariaDB.

Jak resetovat kořenové heslo MySQL/MariaDB

Pokud jste zapomněli heslo uživatele root, musíme provést jeden krok navíc, abychom se mohli přihlásit k terminálu MySQL bez zadání hesla.

1. Zastavte server MySQL

# systemctl stop mysql

Můžete také spustit systemctl stop mariadb , efekt bude stejný.

2. Spuštění serveru MySQL bez nastavení kontroly oprávnění

Myšlenka je spustit MySQL server bez načtení informací o tabulkách grantů, abychom se mohli přihlásit jako uživatel root bez zadání hesla.

Spuštění serveru MySQL takto představuje bezpečnostní riziko, takže je nutné jej provést krátce a vypnout ihned po resetování hesla uživatele root.

Můžeme spustit MySQL server v nouzovém režimu a předat –skip-grant-tables možnost přeskočit načítání tabulek grantů, které ukládají nastavení uživatelských oprávnění.

# sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 11734
root@localhost:~# 200427 20:05:40 mysqld_safe Logging to syslog.
200427 20:05:40 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
#

Je důležité spustit příkaz končící na &, aby běžel na pozadí. Také předávám –skip-networking možnost přeskočit síť, která brání ostatním klientům v připojení k serveru MySQL.

3. Připojte se k serveru MySQL jako root bez zadávání hesla

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Všimněte si, že neposkytujeme heslo root, ale přesto se můžeme připojit k serveru MySQL.

4. Obnovte heslo uživatele root v tabulce mysql.user

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
# 

5. Zastavte a spusťte server MySQL

Nejprve zabijeme běžící MySQL server. PID se nachází v /var/run/mysqld/mysqld.pid soubor.

# cat /var/run/mysqld/mysqld.pid
11891
# sudo kill 11891
# 

Nyní spusťte MySQL server v normálním režimu.

# systemctl start mysql

6. Ověřte přihlášením jako uživatel root s novým heslem

# mysql -uroot -pqwerty2022
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Pokud se pokusíte přihlásit jako root bez hesla, zobrazí se chyba „Přístup odepřen“.

# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# 

Závěr

Uživatel root MySQL je jako každý jiný uživatel. Změna nebo resetování jeho hesla je však trochu složitější, protože jde o superuživatele a nemůžeme změnit heslo uživatele root z přihlášení jiného uživatele.


Linux
  1. Jak resetovat kořenové heslo MySQL na CentOS 6

  2. Jak obnovit heslo root MySQL

  3. Jak resetovat kořenové heslo MySQL nebo MariaDB

  1. Jak resetovat kořenové heslo MySQL

  2. Resetujte kořenové heslo MySQL

  3. Jak změnit heslo root mysql

  1. Jak obnovit heslo root MySQL

  2. Jak obnovit heslo root MySQL Server

  3. Jak změníme heslo root?