Podręcznik MySQL Reference zawiera szczegółowe instrukcje resetowania hasła dla roota, które są następujące:
Procedura w systemie Windows:
- Zaloguj się do systemu Windows, w którym działa MySQL jako administrator.
- Zatrzymaj serwer MySQL, jeśli jest uruchomiony. W przypadku serwera działającego jako usługa systemu Windows przejdź do Menedżera usług:
Menu Start -> Panel sterowania -> Narzędzia administracyjne -> Usługi
Następnie znajdź usługę MySQL na liście i zatrzymaj ją.
Jeśli twój serwer nie działa jako usługa, może być konieczne użycie Menedżera zadań, aby wymusić jego zatrzymanie.
- Utwórz plik tekstowy i umieść w nim następujące polecenia, każde w jednym wierszu:
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
Zawartość pliku nazwanego przez opcję --init-file jest wykonywana podczas uruchamiania serwera, zmieniając hasło roota. Po pomyślnym uruchomieniu serwera należy usunąć C:\mysql-init.txt.
Jeśli zainstalowałeś MySQL za pomocą Kreatora instalacji MySQL, może być konieczne określenie opcji --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
Odpowiednie ustawienie --defaults-file można znaleźć za pomocą Menedżera usług:
Menu Start -> Panel sterowania -> Narzędzia administracyjne -> Usługi
Znajdź usługę MySQL na liście, kliknij ją prawym przyciskiem myszy i wybierz opcję Właściwości. Pole Ścieżka do pliku wykonywalnego zawiera ustawienie --defaults-file. Pamiętaj, aby podać argument --init-file z pełną ścieżką systemową do pliku, niezależnie od bieżącego katalogu roboczego
- Zatrzymaj serwer MySQL, a następnie uruchom go ponownie w trybie normalnym. Jeśli serwer MySQL działa jako usługa, uruchom go z okna Usługi systemu Windows. Jeśli uruchamiasz serwer ręcznie, użyj dowolnego polecenia, którego zwykle używasz.
- Połącz się z serwerem MySQL, używając nowego hasła. Pamiętaj też, aby po zakończeniu usunąć plik mysql-init.txt.
W środowisku Unix i Linux procedura resetowania hasła roota wygląda następująco:
- Zaloguj się do systemu Unix jako użytkownik root Unix lub ten sam użytkownik, na którym działa serwer mysqld.
- Zlokalizuj plik .pid, który zawiera identyfikator procesu serwera. Dokładna lokalizacja i nazwa tego pliku zależy od twojej dystrybucji, nazwy hosta i konfiguracji. Typowe lokalizacje to /var/lib/mysql/, /var/run/mysqld/ i /usr/local/mysql/data/. Ogólnie nazwa pliku ma rozszerzenie .pid i zaczyna się od mysqld lub nazwy hosta systemu.
Zatrzymaj serwer MySQL, wysyłając normalny kill (nie kill -9) do procesu mysqld, używając ścieżki do pliku .pid w następującym poleceniu:
shell> kill `cat /mysql-data-directory/host_name.pid`
Zwróć uwagę na użycie backticków zamiast cudzysłowów w poleceniu cat; powodują one podstawienie wyjścia cat do polecenia kill.
- Utwórz plik tekstowy i umieść w nim następujące polecenie w jednym wierszu:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
Zapisz plik pod dowolną nazwą. W tym przykładzie plik będzie miał postać ~/mysql-init.
- Zrestartuj serwer MySQL ze specjalną opcją --init-file=~/mysql-init:
shell> mysqld_safe --init-file=~/mysql-init &
Zawartość pliku init jest wykonywana podczas uruchamiania serwera, zmieniając hasło roota. Po pomyślnym uruchomieniu serwera należy usunąć ~/mysql-init.
- Zrestartuj serwer normalnie. Połącz się z serwerem MySQL, używając nowego hasła.
Alternatywnie, na dowolnej platformie, klient mysql może być użyty do ustawienia nowego hasła, chociaż jest to mniej bezpieczny sposób resetowania hasła (szczegółowe instrukcje tutaj):
- Zatrzymaj mysqld i uruchom go ponownie za pomocą opcji --skip-grant-tables --user=root (użytkownicy Windows pomijają część --user=root).
- Połącz się z serwerem mysqld za pomocą tego polecenia:
shell> mysql -u root
- Wydaj następujące instrukcje w kliencie mysql:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
Zastąp 'newpwd' aktualnym hasłem roota, którego chcesz użyć.
- Powinieneś być w stanie połączyć się przy użyciu nowego hasła.