Zapomněli jste root
své databáze MySQL? uživatelské heslo? Bez obav! Tento průvodce krok za krokem vysvětluje, jak resetovat heslo root v MySQL 8 v operačním systému Ubuntu 20.04.
Poznámka: Jak již možná víte, uživatel root MySQL používá auth_socket
plugin pro ověřování se serverem MySQL v systémech Ubuntu s MySQL 5.7 a novějšími verzemi. Můžete se tedy přihlásit k serveru MySQL jako root
uživatel pomocí sudo mysql
příkaz, pokud znáte sudo
svého uživatele systému Heslo. V takovém případě není nutné měnit root
MySQL Heslo. Pokud jste již změnili metodu ověřování pro kořen MySQL buď caching_sha2_password
nebo mysql_native_password
, podle níže uvedených kroků resetujte root
heslo databáze MySQL.
Obnovení hesla uživatele root v MySQL 8 na Ubuntu Linux
1. Nejprve zastavte službu MySQL pomocí příkazu:
$ sudo systemctl stop mysql
Tím se zastaví služba MySQL, pokud je spuštěna. Stav služby MySQL můžete ověřit příkazem:
$ sudo systemctl status mysql
Ukázkový výstup:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) since Mon 2021-05-31 11:01:15 UTC; 1min 15s ago Process: 1446 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS) Main PID: 1446 (code=exited, status=0/SUCCESS) Status: "Server shutdown complete" May 31 07:57:50 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server… May 31 07:57:51 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server. May 31 11:01:14 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server… May 31 11:01:15 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded. May 31 11:01:15 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.
2. Dále spusťte MySQL server bez jakékoli kontroly oprávnění. Chcete-li to provést, spusťte:
$ sudo systemctl edit mysql
Tím se otevře mysql
systemd
konfigurační soubor váš výchozí textový editor. V mém případě je to nano
editor.
Přidejte do něj následující řádky:
[Service] ExecStart= ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
Po přidání výše uvedených řádků stiskněte CTRL+O
a ENTER
uložte soubor a poté stiskněte CTRL+X
zavřít.
Zde jsou --skip-grant-tables
umožňuje připojit se k databázovému serveru MySQL bez hesla a se všemi oprávněními. Deaktivuje také výpisy ze správy účtu, jako je ALTER USER
a SET PASSWORD
. A --skip-networking
Tato volba se používá k zabránění připojení ostatních klientů k databázovému serveru. Protože deaktivuje všechna vzdálená připojení, žádný ze vzdálených klientů nemá přístup k databázovému serveru, dokud databázový server normálně nerestartujete.
3. Znovu načtěte systemd
konfiguraci pomocí příkazu:
$ sudo systemctl daemon-reload
4. Spusťte službu MySQL:
$ sudo systemctl start mysql
Tím se spustí MySQL server s --skip-grant-table
s a --skip-networking
možnosti. Můžete to ověřit kontrolou stavu služby MySQL:
$ sudo systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/mysql.service.d └─override.conf Active: active (running) since Mon 2021-05-31 11:39:18 UTC; 1min 23s ago Process: 1882 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 1905 (mysqld) Status: "Server is operational" Tasks: 36 (limit: 2280) Memory: 331.0M CGroup: /system.slice/mysql.service └─1905 /usr/sbin/mysqld --skip-grant-tables --skip-networking May 31 11:39:16 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server… May 31 11:39:18 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
5. Nyní se připojte k serveru MySQL jako root
uživatel bez hesla:
$ sudo mysql -u root
Okamžitě se dostanete do výzvy shellu MySQL.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 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>
6. Přihlásili jsme se k databázovému serveru bez načtení tabulek grantů (protože jsme použili --skip-grant-tables
volba). Nemůžeme tedy použít ALTER USER
příkaz, který potřeboval k resetování hesla. Chcete-li načíst tabulky grantů, spusťte následující příkaz z příkazového řádku prostředí MySQL:
mysql> FLUSH PRIVILEGES;
7. Dále spusťte některý z následujících příkazů a resetujte MySQL root
heslo.
Pokud používáte caching_sha2_password
plugin, spusťte:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Pokud používáte mysql_native_password
plugin, spusťte místo toho toto:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';
Nahraďte Password123#@!
s vlastními.
Po změně root
MySQL heslo, ukončete výzvu shellu MySQL:
mysql> exit
8. Vraťte zpět upravený systemd
konfiguraci zpět do normálního nastavení pomocí příkazu:
$ sudo systemctl revert mysql
Tímto odstraníte všechny upravené soubory.
Removed /etc/systemd/system/mysql.service.d/override.conf. Removed /etc/systemd/system/mysql.service.d.
9. Znovu načtěte systemd
konfigurace, aby se změny projevily:
$ sudo systemctl daemon-reload
10. Nakonec normálně restartujte MySQL server:
$ sudo systemctl restart mysql
11. Nyní byste měli být schopni se připojit k databázi MySQL jako root
uživatele s new password
pomocí příkazu:
$ mysql -u root -p
Zadejte root
heslo pro přístup do shellu MySQL:
mysql>
Existuje také další způsob, jak změnit root
MySQL heslo v Linuxu. Je to trochu jiné než tato metoda. Pokud vás to zajímá, podívejte se na následující odkaz:
>> How To Reset MySQL Root User Password In Linux
Závěr
Jak můžete vidět, resetování hesla root MySQL je snadné! Pokud jste pečlivě dodržovali výše uvedené kroky, můžete obnovit heslo kořenového adresáře databáze MySQL během několika minut. Už to neztrácej. Zapamatujte si své heslo nebo jej uložte na bezpečném místě.