V nešťastném případě zapomenutí nebo ztráty kořenového hesla MySQL budete jistě potřebovat způsob, jak ho nějak obnovit. Potřebujeme vědět, že heslo je uloženo v tabulce uživatelů. To znamená, že musíme vymyslet způsob, jak obejít autentizaci MySQL, abychom mohli aktualizovat záznam hesla.
Naštěstí je to snadné a tento tutoriál vás provede procesem obnovení nebo resetování hesla root ve verzi MySQL 8.0.
Podle dokumentace MySQL existují dva způsoby, jak resetovat kořenové heslo MySQL. Obojí zkontrolujeme.
Resetujte heslo kořene MySQL pomocí –init-file
Jedním ze způsobů, jak resetovat heslo uživatele root, je vytvořit místní soubor a poté spustit službu MySQL pomocí --init-file
možnost, jak je znázorněno.
# vim /home/user/init-file.txt
Je důležité, abyste se ujistili, že soubor je čitelný pro uživatele mysql. Do tohoto souboru vložte následující:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Ve výše uvedené změně „nové_heslo ” s heslem, které chcete použít.
Nyní se ujistěte, že je služba MySQL zastavena. Můžete provést následující:
# systemctl stop mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init
Poté spusťte následující:
# mysqld --user=mysql --init-file=/home/user/init-file.txt --console
Tím se spustí služba MySQL a během procesu se spustí init-soubor, který jste vytvořili, a tím se aktualizuje heslo pro uživatele root. Jakmile bude heslo resetováno, nezapomeňte soubor odstranit.
Ujistěte se, že jste zastavili server a poté jej normálně spustili.
# systemctl stop mysqld.service # for distros using systemd # systemctl restart mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init # /etc/init.d/mysqld restart # for distros using init
Nyní byste měli být schopni se připojit k serveru MySQL jako root pomocí nového hesla.
# mysql -u root -p
Resetujte heslo kořene MySQL pomocí –skip-grant-tables
Druhá možnost, kterou máme, je spustit službu MySQL pomocí --skip-grant-tables
volba. To je méně bezpečné, protože když je služba spuštěna tímto způsobem, všichni uživatelé se mohou připojit bez hesla.
Pokud je server spuštěn --skip-grant-tables
, volba pro --skip-networking
se automaticky aktivuje, takže vzdálená připojení nebudou dostupná.
Nejprve se ujistěte, že je zastavena služba MySQL.
# systemctl stop mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init
Poté spusťte službu s následující možností.
# mysqld --skip-grant-tables --user=mysql &
Poté se můžete připojit k serveru mysql pouhým spuštěním.
# mysql
Protože při spuštění služby pomocí --skip-grant-tables
je správa účtu deaktivována možnost, budeme muset znovu načíst granty. Tímto způsobem budeme moci heslo později změnit:
# FLUSH PRIVILEGES;
Nyní můžete spustit následující dotaz k aktualizaci hesla. Nezapomeňte změnit „new_password“ na skutečné heslo, které chcete použít.
# ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
Nyní zastavte server MySQL a spusťte jej normálně.
# systemctl stop mysqld.service # for distros using systemd # systemctl restart mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init # /etc/init.d/mysqld restart # for distros using init
Měli byste být schopni se připojit pomocí svého nového hesla.
# mysql -u root -p
Možná byste si také rádi přečetli tyto užitečné následující články související s MySQL.
- Jak nainstalovat MySQL 8 v CentOS, RHEL a Fedora
- 15 užitečných tipů pro ladění a optimalizaci výkonu MySQL
- 12 postupů zabezpečení MySQL pro Linux
- 4 užitečné nástroje příkazového řádku pro sledování výkonu MySQL
- Příkazy pro správu databáze MySQL
Závěr
V tomto článku jste se naučili, jak obnovit ztracené heslo root pro server MySQL 8.0. Doufám, že tento proces byl snadný.