Referenční příručka MySQL obsahuje podrobné kroky, jak resetovat heslo pro uživatele root, které jsou uvedeny níže:
Postup v systému Windows:
- Přihlaste se do systému Windows, kde běží MySQL, jako správce.
- Zastavte server MySQL, pokud je spuštěn. U serveru, který běží jako služba Windows, přejděte do Správce služeb:
Nabídka Start -> Ovládací panely -> Nástroje pro správu -> Služby
Poté v seznamu najděte službu MySQL a zastavte ji.
Pokud váš server neběží jako služba, možná budete muset pomocí Správce úloh vynutit jeho zastavení.
- Vytvořte textový soubor a vložte do něj následující příkazy každý na jeden řádek:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
Save the file with any name. For this example the file will be C:\mysql-init.txt.SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
- Open a console window to get to the DOS command prompt: Start Menu -> Run -> cmd
- If MySQL is installed in C:\mysql. If MySQL is installed in another location, adjust the following commands accordingly.
At the DOS command prompt, execute this command:
C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
Obsah souboru pojmenovaného volbou --init-file se spustí při spuštění serveru a změní se heslo uživatele root. Po úspěšném spuštění serveru byste měli odstranit C:\mysql-init.txt.
Pokud jste nainstalovali MySQL pomocí Průvodce instalací MySQL, možná budete muset zadat volbu --defaults-file:
C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt
Příslušné nastavení souboru --defaults-file lze nalézt pomocí Správce služeb:
Nabídka Start -> Ovládací panely -> Nástroje pro správu -> Služby
Najděte v seznamu službu MySQL, klikněte na ni pravým tlačítkem myši a vyberte možnost Vlastnosti. Pole Cesta ke spustitelnému souboru obsahuje nastavení --defaults-file. Nezapomeňte zadat argument --init-file s úplnou systémovou cestou k souboru, bez ohledu na váš aktuální pracovní adresář
- Zastavte server MySQL a poté jej znovu spusťte v normálním režimu. Pokud je server MySQL spuštěn jako služba, spusťte ji z okna Služby systému Windows. Pokud server spouštíte ručně, použijte příkaz, který běžně používáte.
- Připojte se k serveru MySQL pomocí nového hesla. Po dokončení také nezapomeňte smazat soubor mysql-init.txt.
Pro prostředí Unix a Linux je postup resetování hesla root následující:
- Přihlaste se do systému Unix jako uživatel root nebo jako stejný uživatel, pod kterým běží server mysqld.
- Vyhledejte soubor .pid, který obsahuje ID procesu serveru. Přesné umístění a název tohoto souboru závisí na vaší distribuci, názvu hostitele a konfiguraci. Běžná umístění jsou /var/lib/mysql/, /var/run/mysqld/ a /usr/local/mysql/data/. Obecně má název souboru příponu .pid a začíná buď mysqld, nebo názvem hostitele systému.
Zastavte server MySQL odesláním normálního zabití (nikoli kill -9) do procesu mysqld s použitím názvu cesty k souboru .pid v následujícím příkazu:
shell> kill `cat /mysql-data-directory/host_name.pid`
Všimněte si použití zpětných uvozovek spíše než dopředných uvozovek u příkazu cat; ty způsobí nahrazení výstupu cat do příkazu kill.
- Vytvořte textový soubor a vložte do něj na jeden řádek následující příkaz:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
Uložte soubor s libovolným názvem. V tomto příkladu bude soubor ~/mysql-init.
- Restartujte server MySQL pomocí speciální možnosti --init-file=~/mysql-init:
shell> mysqld_safe --init-file=~/mysql-init &
Obsah init-souboru se spustí při spuštění serveru a změní se heslo uživatele root. Po úspěšném spuštění serveru byste měli odstranit ~/mysql-init.
- Restartujte server normálně. Připojte se k serveru MySQL pomocí nového hesla.
Alternativně lze na jakékoli platformě k nastavení nového hesla použít klienta mysql, i když je to méně bezpečný způsob resetování hesla (podrobný návod zde):
- Zastavte mysqld a restartujte jej pomocí --skip-grant-tables --user=root (uživatelé Windows vynechají část --user=root).
- Připojte se k serveru mysqld pomocí tohoto příkazu:
shell> mysql -u root
- V klientovi mysql zadejte následující příkazy:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
Nahraďte 'newpwd' skutečným heslem uživatele root, které chcete použít.
- Měli byste být schopni se připojit pomocí nového hesla.