Tento tutoriál obsahuje kroky k resetování nebo změně hesla root serveru MySQL v případě, že uživatel heslo zapomněl. Předpokládá, že máte přístup k systému pro zastavení a spuštění serveru MySQL. Tento výukový program je specifický pro MySQL 8.0 a vyšší, ačkoli by to mělo fungovat hned po vybalení pro starší verze MySQL včetně MySQL 5.7 . Heslo uživatele root můžeme resetovat dvěma způsoby, jak je uvedeno níže.
Poznámky :Můžete také sledovat výukové programy MySQL – Jak nainstalovat MySQL 8 na Ubuntu, Jak úplně odebrat MySQL z Ubuntu a Naučte se základní SQL dotazy pomocí MySQL.
Aktualizovat heslo
Můžeme jednoduše aktualizovat root heslo MySQL v případě, že jej již známe. To lze provést pomocí příkazů, jak je uvedeno níže. ALTER příkaz je preferovaný, protože funguje na MySQL 5.7 a MySQL 8 , ačkoli můžete postupovat podle kteréhokoli z příkazů.
# Přihlásit se do MySQL
mysql -uroot -p
# NEBO
mysql -u root -p
# MySQL - 5.7.5 a starší
AKTUALIZOVAT SET mysql.user password=PASSWORD('password') WHERE user='root';
# MySQL - 5.7.6 a novější
AKTUALIZOVAT SET mysql.user authentication_string=PASSWORD ("heslo") kde user='root';
# OR
NASTAVTE HESLO PRO 'root'@'localhost' =PASSWORD("password");
# MySQL - 5.7, 8
ZMĚNIT UŽIVATELE 'root'@'localhost' IDENTIFIKOVAT PODLE '';
# NEBO
ZMĚNIT UŽIVATELE 'root'@'localhost' IDENTIFIKOVANÉHO S mysql_native_password BY '';
# MySQL - 8
ZMĚNIT UŽIVATELE 'root'@'localhost' IDENTIFIKOVANÉHO S CAching_sha2_password BY '';
# Flush
FLUSH PRIVILEGES;
# Odpojit
ukončit;
V případě, že jste zapomněli heslo uživatele root, můžete postupovat podle procesu A nebo Proces B jak je uvedeno níže.
Proces A – Zabezpečení
V tomto procesu zastavíme a spustíme server MySQL, abychom použili init skript ke změně hesla uživatele root.
Krok 1 – Zastavte server
Jako první krok tohoto procesu musíme server zastavit. To lze provést pomocí příkazů uvedených níže.
# Použití init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop
# Použití service
služba sudo mysql stop
# Pomocí systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql
Krok 2 – Vytvořte inicializační soubor
Nyní vytvořte soubor init a přidejte příkaz pro aktualizaci hesla uživatele root, jak je uvedeno níže.
# Create Init File – Použijte svůj preferovaný editor
sudo nanoinit-file.txt
# Přidejte dotaz pro aktualizaci hesla
# MySQL - 5.7, 8
ZMĚNIT UŽIVATELE 'root'@'localhost' IDENTIFIKOVAT PODLE '';
# NEBO
ALTER UŽIVATELE 'root'@'localhost' IDENTIFIKOVAT S mysql_native_password BY '';
# MySQL - 8
ZMĚNIT UŽIVATELE 'root'@'localhost' IDENTIFIKOVANÉHO S caching_sha2_password BY '';
Krok 3 – Spusťte MySQL Server
Nyní spusťte MySQL server pomocí init souboru, jak je ukázáno níže.
# Spusťte server
sudo mysqld --init-file=init-file.txt &
# OR
sudo mysqld_safe --init-file=init-file.txt &
Může způsobit spoustu chyb v závislosti na instalaci vašeho serveru.
Může se zobrazit chyba se zprávou – mysqld_safe Directory '/var/run/
# Zastavit server
# Vytvořit adresář
sudo mkdir -p /var/run/mysqld
# Změnit vlastníka
sudo chown mysql :mysql /var/run/mysqld
# Začněte init souborem
sudo mysqld_safe --init-file=init-file.txt &
Může se zobrazit chybová zpráva – CHYBA 2002 (HY000):Nelze se připojit k místnímu serveru MySQL přes soket '/var/run/
# Spusťte MySQL Server normálně - Ubuntu
služba sudo mysql start
# Přejděte do adresáře sock
cd /var/run
# Take záloha - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Zastavte server normálně - Ubuntu
služba sudo mysql stop
# Obnovte ponožku
sudo mv ./mysqld.bak ./mysqld
# Spusťte MySQL v nebezpečném režimu
sudo mysqld_safe --skip-grant-tables &
Krok 4 – Zastavení a spuštění serveru MySQL
Nyní zastavte a spusťte server MySQL pomocí běžných příkazů, jak je uvedeno níže.
# Pomocí init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# NEBO
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Pomocí služby
služba sudo mysql stop
služba sudo mysql start
# Pomocí systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql
V případě potřeby ukončete stávající procesy. Použijte pouze v případě, že výše uvedené příkazy nefungují k zastavení a spuštění serveru.
# Najít procesy
ps aux | grep mysqld
ps aux | grep mysql
# Zabijte procesy
sudo killall mysqld
sudo killall mysql
Krok 5 – Test hesla
Nakonec otestujte nové heslo pomocí příkazu, jak je uvedeno níže.
# Testovat nové heslo
mysql -u root -p
Po otestování nového hesla nezapomeňte smazat init soubor. V případě, že to nevyjde, můžete postupovat podle Procesu B .
Proces B – Méně bezpečné
V tomto procesu zastavíme a poté spustíme server MySQL, aniž bychom k přihlášení vyžadovali heslo.
Krok 1 – Zastavte server
Jako první krok k dokončení tohoto procesu musíme zastavit aktuálně běžící server MySQL. To lze provést pomocí příkazů uvedených níže.
# Použití init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop
# Použití service
služba sudo mysql stop
# Pomocí systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql
Krok 2 – Spusťte MySQL bez hesla
Nyní spusťte server MySQL s deaktivovaným heslem pomocí příkazu, jak je uvedeno níže. Nezapomeňte přidat
ampersand (&) na konci tohoto příkazu. Umožňuje také --skip-networking automaticky, aby se zabránilo vzdáleným připojením.
# Začít bez hesla
sudo mysqld_safe --skip-grant-tables &
Může se zobrazit chyba se zprávou – mysqld_safe Directory '/var/run/
mysqld ' pro soubor soketu UNIXne existuje . Musíme vytvořitmysqld adresář a vytvořtemysql jako vlastník pomocí příkazů uvedených níže.
# Zastavit server
# Vytvořit adresář
sudo mkdir -p /var/run/mysqld
# Změnit vlastníka
sudo chown mysql :mysql /var/run/mysqld
# Start bez hesla
sudo mysqld_safe --skip-grant-tables &
Může se zobrazit chybová zpráva – CHYBA 2002 (HY000):Nelze se připojit k místnímu serveru MySQL přes soket '/var/run/
mysqld /mysqld .sock' . V takovém případěpřípad , postupujte podle níže uvedených příkazů pro Ubuntu, abyste to vyřešili.
# Start MySQL Server
služba sudo mysql start
# Přejděte do adresáře sock
cd /var/run
# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Zastavte server
Služba sudo mysql stop
# Obnovte ponožku
sudo mv ./mysqld.bak ./mysqld
# Spusťte MySQL v nebezpečném režimu
sudo mysqld_safe --skip-grant-tables &
Krok 3 – Připojte se k MySQL
Nyní otevřete jiný terminál nebo se připojte k serveru přes jiný shell a připojte klienta.
# Připojit přímo
mysql
# Připojit jako root
mysql -uroot
# OR
mysql -u root
Krok 4 – Změna hesla
V tomto kroku změňte heslo uživatele root pomocí příkazů uvedených níže. Můžete se také podívat do části Aktualizace hesla tohoto návodu k použití jiných příkazů ke změně hesla.
# Změnit heslo
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIKOVÁNO OD '';
# NEBO
ALTER USER 'root'@'localhost' IDENTIFIKOVANÝ S mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIKOVANÝ S CAching_sha2_password BY'';
# Flush
FLUSH PRIVILEGES;
# Disconnect
quit;
Krok 5 – Zastavení a spuštění serveru MySQL
Nyní zastavte a spusťte server MySQL pomocí běžných příkazů, jak je uvedeno níže.
# Pomocí init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# NEBO
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Pomocí služby
služba sudo mysql stop
služba sudo mysql start
# Pomocí systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql
V případě potřeby ukončete stávající procesy. Použijte pouze v případě, že výše uvedené příkazy nefungují k zastavení a spuštění serveru.
# Najít procesy
ps aux | grep mysqld
ps aux | grep mysql
# Zabijte procesy
sudo killall mysqld
sudo killall mysql
Krok 6 – Otestujte heslo
Nakonec otestujte nové heslo pomocí příkazu, jak je uvedeno níže.
# Testovat nové heslo
mysql -u root -p
Shrnutí
Takto můžeme resetovat nebo změnit heslo uživatele root nebo jiného uživatele v případě, že heslo zapomeneme.