MySQL databáze se používá ve spoustě, nejen webových, aplikací. U jedné naší aplikace jsem potřeboval provést hromadnou změnu u několika tisíc záznamů a jak jsem zjistil, tak dodavatel nám heslo nedodal. Naštěstí lze vše řešit snadno.
K tomu, aby šlo heslo změnit je potřeba mít adminovský přístup k serveru, na kterém MySQL běží. Popisovat budu postup pro OS Windows. Hashované heslo je uloženo v tabulce user v databázi mysql. Předtím, než budeme do databáze zasahovat, musíme vypnout MySQL server, nejjednoduššeji přes konzolu services.msc, kde vypneme službu mysql. Potom si uděláme zálohu datových souborů tabulek, do kterých budeme zasahovat. Minimálně je vhodné uložit tyto soubory z adresáře data/mysql:
- user.frm
- user.MYD
- user.MYI
Dále si nachystáme textový soubor nazvaný třeba mysql.txt, který umístíme na disk c:. Jeho obsah bude pro MySQL verze 5.7.5 nebo starší:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1234');
nebo pro novější verze:
ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
A spustíme mysql pomocí příkazu:
mysqld --init-file=C:\\mysql.txt
Pak se můžeme přihlásit k rootovskému účtu s heslem 1234:
mysql -u root -p
Pokud poté potřebujeme vrátit hesla na původní hodnoty, stačí vypnout mysql server a zazálohované soubory nakopírovat do adresáře data/mysql.