sql >> Databáze >  >> RDS >> Mysql

Resetujte kořenové heslo MySQL

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 nano init-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/ mysqld ' pro soubor soketu UNIX ne existuje . Musíme vytvořit mysqld adresář a vytvořte mysql 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

# 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/mysqld /mysqld .sock' . V takovém případě problém vyřešte podle níže uvedených příkazů.

# 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 UNIX ne existuje . Musíme vytvořit mysqld adresář a vytvořte mysql 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.


  1. Jak vytvořit adresář v Oracle?

  2. Chyba při použití shody vzorů, která není podobná žádné v PostgreSQL

  3. Funkce SIN() v Oracle

  4. PL/SQL program pro tisk údajů o zaměstnanci