GNU/Linux >> Znalost Linux >  >> Linux

Jak resetovat heslo kořenového uživatele MySQL v Linuxu

Zapomněli jste heslo uživatele root MySQL? Bez obav! Tato příručka vás provede kroky k resetování hesla uživatele root MySQL v operačních systémech Linux. Níže uvedené kroky by také měly fungovat pro resetování rootového hesla MariaDB.

Návod na resetování hesla uživatele root (administrátora) v MySQL jsme již zveřejnili starší verze, tedy MySQL 5.7. Tato metoda však nefungovala s novou verzí MySQL 8. Pokud jste chtěli resetovat heslo root v MySQL 8, postupujte podle některého ze dvou níže uvedených řešení.

Resetujte heslo kořenového uživatele MySQL v Linuxu

Jak jsem již zmínil, heslo root MySQL můžeme resetovat dvěma způsoby.

  • Obecný způsob,
  •  Pomocí init_file systémová proměnná.

1. Obecný způsob resetování hesla root MySQL

Tato metoda bude fungovat bez ohledu na operační systém, který používáte. Varuji vás, že je to méně bezpečný způsobem, protože server MySQL spustíme pomocí --skip-grant-tables volba. To umožňuje komukoli s přístupem k serveru neomezený přístup ke všem databázím .

Nejprve zastavte službu MySQL pomocí příkazu:

$ sudo systemctl stop mysql

Můžete ověřit, zda je MySQL skutečně zastavena 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 Sat 2021-05-29 11:53:08 UTC; 8s ago
     Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
     Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 666 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
 May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
 May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server…
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded.
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.

Služba MySQL neběží.

Nyní restartujte server MySQL bez kontroly oprávnění spuštěním následujícího příkazu:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Zde --skip-grant-tables umožňuje připojit se k databázovému serveru mysql bez hesla a se všemi oprávněními. --skip-networking Tato volba se používá k zabránění připojení ostatních klientů k databázovému serveru. A ampersand (& ) symbol se používá ke spuštění příkazu na pozadí, takže můžete psát další příkazy uvedené v následujících krocích. Mějte prosím na paměti, že výše uvedený příkaz je nebezpečný a váš databázový server se stává nezabezpečeným a zranitelným vůči bezpečnostním hrozbám. Tento příkaz byste měli spouštět pouze na krátkou dobu pro resetování hesla.

Může se zobrazit následující chyba:

2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Pokud se zobrazí tato chyba, vytvořte chybějící adresář (tj. /var/run/mysqld ) a nastavte mu správná oprávnění, jak je uvedeno níže.

$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld

Nyní zkuste znovu spustit server mysql bez hesla a s právy root:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Dále se připojte k serveru mysql pomocí příkazu:

$ mysql

Dostanete se do příkazového řádku mysql shellu.

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 7
 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.

Protože jsme se přihlásili bez načtení tabulek grantů (protože jsme použili --skip-grant-tables možnost), nemůžeme použít ALTER USER příkaz k resetování hesla. Pojďme tedy načíst tabulky grantů pomocí příkazu:

mysql> FLUSH PRIVILEGES;

Nyní spusťte následující příkaz pro aktualizaci hesla uživatele root mysql:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

Ve výše uvedeném příkazu nahraďte [email protected]#@! s vlastním heslem. Upozorňujeme, že pokud jste povolili Validate Password musíte použít silné heslo.

Nakonec ukončete výzvu mysql:

mysql> exit

Nakonec vypněte běžící databázový server, který jste spustili dříve pomocí --skip-grant-tables volba. Chcete-li to provést, spusťte:

$ sudo mysqladmin -u root -p shutdown

Budete požádáni o zadání sudo heslo následované root MySQL uživatelské heslo, které jste nastavili v předchozím kroku.

[sudo] password for ostechnix: 
Enter password: 
2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended
[1]+  Done                    sudo mysqld_safe --skip-grant-tables --skip-networking

Pokud výše uvedený příkaz nefunguje, vyhledejte .pid file který obsahuje ID procesu serveru. Soubor PID bude obvykle dostupný v /var/lib/mysql/ nebo /var/run/mysqld/ nebo /usr/local/mysql/data/ adresář v závislosti na vaší distribuci, názvu hostitele a konfiguraci. Obecně má název souboru příponu .pid a začíná buď mysqld nebo název hostitele vašeho systému.

V mém případě je to "/var/lib/mysql/ubuntuserver.pid" .

Zastavil jsem tedy instanci databázového serveru příkazem:

$ sudo kill `/var/lib/mysql/ubuntuserver.pid`

Použijte prosím zpětné zaškrtnutí uvést cestu k souboru.

MySQL pid můžeme také najít pomocí ps a grep příkazy jako níže:

$ ps ax | grep mysql

Ukázkový výstup:

1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking
1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid

Ručně to zabijte, jak je uvedeno níže:

$ sudo kill <PID>

Nebo ukončete všechny služby MySQL:

$ sudo  killall mysql

Nyní spusťte službu MySQL normálně pomocí příkazu:

$ sudo systemctl start mysql

Nyní se přihlaste k serveru MySQL s novým heslem:

$ mysql -u root -p

Ukázkový výstup:

2. Resetujte kořenové heslo MySQL pomocí souboru s hesly

Dalším způsobem, jak resetovat heslo root mysql, je použít init_file systémová proměnná.

Zastavit službu MySQL:

$ sudo systemctl stop mysql

Vytvořte textový soubor, například ostechnix.txt :

$ vi ostechnix.txt

Přidejte do něj následující řádek:

ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

Nahraďte [email protected]#@! s vlastním heslem ve výše uvedeném řádku. Pokud jste povolili Validate Password plugin, měli byste zadat silné heslo. Uložte a zavřete soubor.

Nyní spusťte MySQL server pomocí init_file systémová proměnná, která ukazuje na ostechnix.txt soubor:

$ sudo mysqld --init-file=/home/sk/ostechnix.txt &

Tento příkaz spustí obsah ostechnix.txt a aktualizujte soubor [email protected] heslo účtu s novým heslem uvedeným v ostechnix.txt a nakonec spusťte server mysql.

Nyní zastavte a restartujte server mysql normálně:

$ sudo systemctl stop mysql
$ sudo systemctl start mysql

Nakonec smažte soubor s hesly, tj. ostechnix.txt .

$ rm /home/sk/ostechnix.txt

Nyní se můžete přihlásit k serveru mysql pomocí nového hesla pomocí příkazu:

$ mysql -u root -p

Také jsme zveřejnili mírně odlišnou metodu resetování kořenového hesla MySQL. Podrobnosti naleznete v následující příručce:

>> How To Reset Root Password In MySQL 8 On Ubuntu Linux

Závěr

V této příručce jsme se naučili dva různé způsoby, jak obnovit zapomenuté heslo uživatele root MySQL v operačních systémech Linux. Pokud jste ztratili heslo uživatele k účtu správce databáze, můžete ho snadno resetovat během několika minut.


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

  2. Jak obnovit heslo root MySQL

  3. Jak obnovit heslo root MySQL Server

  1. Jak resetovat kořenové heslo MySQL?

  2. Jak resetovat kořenové heslo MySQL

  3. Resetujte kořenové heslo MySQL

  1. Jak obnovit heslo root MySQL

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

  3. Obnovení hesla root na Rocky Linux - Jak na to?