GNU/Linux >> Znalost Linux >  >> Linux

Jak obnovit heslo root MySQL

V tomto článku vám ukážu, jak obnovit heslo root MySQL dvěma různými způsoby. Obě metody také náhodou fungují s vidlicí MariaDB bez Oracle.

Proč?

Existují dva hlavní důvody, proč je nutné resetovat heslo root:

  • zapomněli jste heslo
  • to nevíte toto heslo

Důvodů, proč neznáte heslo, může být mnoho:nikdy jste neznali heslo a starý DBA je pryč; někdo se změnil pro zábavu nebo ze zlomyslných důvodů; jsou 3 hodiny ráno, systém se zhroutil a dba je na dovolené v jiné zemi atd.

Faktem je, že jednoho rána musíte nacpat databázi a dostat se do této situace:

Předpokládám, že máte superuživatele (tj. su nebo sudo do root) přístup k operačnímu systému. Můj operační systém v tomto tutoriálu je Debian Linux.

Obě metody vyžadují, abyste předtím zastavili službu mysql. Udělejte to pomocí (nezapomeňte na su/sudo podle potřeby):

# service mysql stop

Metoda 1:

Vytvořte soubor pomocí příkazu SQL pro nastavení nového root hesla, které použijeme při startu mysql. Můžete použít jakýkoli textový editor nebo stačí napsat:

# echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';" > passreset.sql

Pokud zvolíte textový editor, vytvořte soubor pouze s tučnou částí. Samozřejmě zvolte skutečný heslo, snadno zapamatovatelné a těžko zjistitelné.

A spusťte jej ručně pomocí uživatele mysql ( -u mysql) a souboru, který jsme předtím vytvořili (–init-file:passreset.sql). Úplný příkazový řádek by byl:

# mysqld -u mysql --init-file=/var/lib/mysql/passreset.sql

Počkejte, dokud se nezobrazí zpráva:mysqld:připraveno na připojení . Poté otevřete další konzolu a otestujte své nové root heslo:

Metoda 2:

V minulosti jsem to viděl několikrát na internetu, jak resetovat heslo root mysql. První pokus dnes ráno pro mě nefungoval, ale našel jsem řešení.

Použijeme tento přepínač příkazu mysqld:

--skip-grant-tables    Start without grant tables. This gives all users FULL
                               ACCESS to all tables.

To mi umožnilo plný přístup ke všem tabulkám. Postup je připojit se k mysql a spustit příkaz ALTER USER, který jsme viděli v předchozí metodě, ale zobrazila se chyba o spuštění mysqld s tabulkami skip-grant-tables.

Řešením je spustit mysqld pomocí přepínače skip-grant-tables a pomocí uživatele mysql. Úplný příkazový řádek je:

# mysqld -u mysql --skip-grant-tables

A v jiné konzoli před aktualizací vyprázdněte oprávnění a poté oprávnění znovu:

# mysql -u root
MariaDB (none) > flush privileges;
MariaDB (none) > ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
MariaDB (none) > flush privileges;
MariaDB (none) > ^DBye

Dokončit

Nyní můžete zastavit mysql a spustit jej normálně. V mém případě ctrl-c nefungovalo, aby to zastavilo, musím předtím zabít ručně spuštěný proces:

# killall mysqld
# service mysql start

A je to, jednou z těchto metod znovu získáte kontrolu nad MySQL nebo MariaDB.


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

  2. Jak obnovit heslo root MySQL

  3. Jak obnovit heslo Ubuntu?

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

  2. Resetujte kořenové heslo MySQL

  3. Jak resetovat zapomenuté kořenové heslo Ubuntu 17.04?

  1. Jak obnovit heslo root MySQL

  2. Jak obnovit heslo root MySQL Server

  3. Jak resetovat kořenové heslo MySQL