Scenariusz, który zna każdy administrator WordPressa: otwierasz panel, wpisujesz hasło — nic. Klikasz „Zapomniałem hasła”, czekasz na email — nic. W skrzynce pustka, w folderze spam pustka, a klient dzwoni, że potrzebuje pilnie dodać produkt. W takiej sytuacji nie ma sensu kombinować z resetowaniem — po prostu zmieniasz hasło bezpośrednio w bazie.
W tym poradniku pokazuję trzy metody awaryjnej zmiany hasła administratora: najpopularniejszą przez phpMyAdmin, szybką przez dodanie kodu do functions.php, oraz profesjonalną przez WP-CLI (jeśli masz SSH). Każda działa niezależnie od tego, czy pamiętasz stare hasło.
Spis treści
ToggleDlaczego email resetujący nie przychodzi?
Zanim przejdziesz do grzebania w bazie, warto wiedzieć, co się naprawdę dzieje — bo problem z przychodzącym mailem jest jedną z najczęstszych przyczyn paniki. WordPress używa domyślnej funkcji PHP mail() do wysyłania wiadomości, która na większości współdzielonych hostingów jest nieskonfigurowana, filtrowana przez serwery pocztowe lub ląduje bezpośrednio w spamie dostawcy (Gmail, WP, Onet).
Docelowym rozwiązaniem jest skonfigurowanie SMTP w WordPressie (przez wtyczkę WP Mail SMTP) — ale to nie pomaga w sytuacji, gdy musisz się zalogować teraz. Dlatego przechodzimy do rozwiązań awaryjnych.
Metoda 1. Zmiana hasła przez phpMyAdmin — krok po kroku
To najbardziej uniwersalna metoda — działa na każdym hostingu, który daje dostęp do panelu phpMyAdmin (czyli praktycznie wszystkie).
Krok 1. Otwórz phpMyAdmin i wybierz bazę
Zaloguj się do panelu hostingu (DirectAdmin, cPanel, Plesk, własny) i znajdź sekcję „phpMyAdmin” lub „Bazy danych MySQL”. Po zalogowaniu wybierz z listy po lewej stronie bazę, z której korzysta Twój WordPress. Jeżeli masz kilka baz i nie wiesz, która jest właściwa — otwórz plik wp-config.php przez FTP i sprawdź stałą DB_NAME.
Krok 2. Otwórz tabelę wp_users
Po rozwinięciu bazy zobaczysz listę tabel. Szukaj tabeli wp_users. Uwaga: nazwa może być inna, jeśli zmieniono prefix tabel podczas instalacji — wtedy będzie to np. xyz123_users. Kliknij w nazwę, aby zobaczyć listę użytkowników.
Krok 3. Znajdź użytkownika administratora
W widoku tabeli zobaczysz kolumny takie jak ID, user_login, user_pass, user_email. Znajdź wiersz z loginem administratora i kliknij „Edytuj” (ikona ołówka po lewej stronie wiersza).
Krok 4. Zmień wartość user_pass
W polu user_pass wpisz nowe hasło — ale najważniejsze: z listy rozwijanej „Funkcja” (zaraz obok pola wartości) wybierz MD5. Następnie kliknij „Wykonaj” na dole strony.
MD5 to funkcja haszująca — zamieni Twoje nowe hasło na ciąg znaków, który WordPress rozpozna jako prawidłowy hash. WordPress przy pierwszym logowaniu automatycznie przeliczy go na bezpieczniejszy format (phpass), więc nie musisz się martwić, że MD5 jest „słabe”.
Częsty błąd: ludzie wklejają nowe hasło do user_pass bez wybierania funkcji MD5 i nie mogą się zalogować. WordPress wtedy próbuje porównać Twój plaintext z hashem — oczywiście bez skutku. Bez wyboru MD5 zmiana nie zadziała.
Krok 5. Zaloguj się i ustaw docelowe hasło
Wejdź na twojadomena.pl/wp-login.php, zaloguj się nowym hasłem, a potem od razu przejdź do „Profil użytkownika” i ustaw inne, silne hasło (tym razem przez standardowy formularz WordPressa). Dzięki temu w bazie zapisze się nowoczesny hash, a nie goły MD5.
Metoda 2. Przez functions.php motywu
Jeżeli nie masz dostępu do phpMyAdmin (bardzo rzadki przypadek), ale masz dostęp FTP, możesz tymczasowo dodać kod do pliku functions.php aktywnego motywu. WordPress wykona go przy ładowaniu i zmieni hasło.
Otwórz plik wp-content/themes/nazwa-twojego-motywu/functions.php przez FTP i na samej górze (po <?php) dodaj:
wp_set_password( 'NOWE_HASLO', 1 );
Cyfra 1 to ID użytkownika w bazie (zwykle 1 dla administratora). Jeżeli Twoje konto admin ma inne ID, znajdź je w tabeli wp_users albo podaj login zamiast ID — WordPress ma też funkcję get_user_by( 'login', 'nazwa' ).
Zapisz plik i wejdź na twojadomena.pl/wp-login.php. Zaloguj się nowym hasłem. Natychmiast po zalogowaniu usuń tę linijkę z functions.php — gdybyś tego nie zrobił, przy każdym ładowaniu strony WordPress próbowałby resetować Twoje hasło, co przy intensywnym ruchu mogłoby się zmienić w problem wydajnościowy, a poza tym to gotowy skrypt do nadużycia.
Metoda 3. WP-CLI (dla odważniejszych)
Jeżeli Twój hosting oferuje dostęp SSH (większość VPS-ów i część hostingów współdzielonych), najszybsza metoda to narzędzie wiersza poleceń WP-CLI. Po zalogowaniu SSH wpisz:
cd ~/public_html
wp user update admin --user_pass='NOWE_HASLO'
Gdzie admin to login użytkownika, którego hasło zmieniasz. Jedno polecenie, zero klikania. Jeżeli WP-CLI nie ma zainstalowane na Twoim hostingu, możesz zainstalować lokalnie w katalogu:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
./wp-cli.phar user update admin --user_pass='NOWE_HASLO'
WP-CLI ma tę zaletę, że cała operacja przebiega bez ładowania WordPressa w przeglądarce — więc działa nawet wtedy, gdy frontend jest zepsuty przez wtyczkę lub WSOD.
Co zrobić, gdy nie wiesz, jaki jest login admina?
Częsty przypadek: przejmujesz stronę po kimś, kto zapomniał podać login. Otwórz wp_users w phpMyAdmin, znajdź wiersze z user_login i sprawdź kolumnę user_registered oraz ID. Administrator to zwykle konto z ID=1 lub najstarsze. Dla pewności sprawdź też tabelę wp_usermeta — w kolumnie meta_key szukasz wierszy wp_capabilities. Wartość tego rekordu wygląda mniej więcej tak:
a:1:{s:13:"administrator";b:1;}
Użytkownicy, którzy mają takie meta_value, są administratorami.
Jak uniknąć problemu w przyszłości?
Zapomniane hasła to jedno z najprostszych do uniknięcia pain pointów, jeśli tylko zadbasz o kilka rzeczy:
- Manager haseł (Bitwarden, 1Password, KeePass) — przestań pamiętać hasła głową.
- Wtyczka WP Mail SMTP skonfigurowana na „wysyłaj wszystko przez Gmaila/Zoho/SendGrid” — dzięki temu emaile resetujące faktycznie przychodzą, kiedy są potrzebne.
- Drugi administrator awaryjny — zarejestruj drugie konto admina (np. pod swoim prywatnym mailem), które wystarczy w razie problemu z głównym.
- Uwierzytelnianie dwuskładnikowe (wtyczka Wordfence Login Security, Two Factor albo podobne) — zmniejsza ryzyko przejęcia konta i daje dodatkową warstwę odzyskiwania.
- Regularne backupy — pozwalają przywrócić wszystkie konta użytkowników w stanie sprzed awarii.
Najczęściej zadawane pytania
Czy MD5 jest bezpieczne do przechowywania haseł?
Nie jest — MD5 to przestarzały algorytm i nie powinien być używany do długoterminowego przechowywania haseł. Ale w tym zastosowaniu traktujemy go jako tymczasowy format, który WordPress akceptuje w bazie. Przy pierwszym poprawnym logowaniu WordPress automatycznie przelicza hasło na nowoczesny hash phpass. Dlatego tak ważne jest, żeby zaraz po odzyskaniu dostępu zmienić hasło przez standardowy formularz w panelu — wtedy docelowy hash jest już bezpieczny.
Czy mogę zmienić login administratora w phpMyAdmin?
Tak — w tabeli wp_users edytuj kolumnę user_login. Ale uwaga: jeżeli zmienisz login, część wtyczek bezpieczeństwa może Cię zablokować (wykryją „nowe” konto admina jako podejrzane). Dla bezpieczeństwa lepiej zostawić oryginalny login i stworzyć drugie konto.
Hasło zmienione, ale nadal nie mogę się zalogować — co dalej?
Kilka możliwych przyczyn:
- Nie wybrałeś funkcji MD5 podczas edycji w phpMyAdmin — wróć i popraw.
- Masz włączony limit prób logowania (Limit Login Attempts, iThemes Security) i Twój IP został tymczasowo zablokowany — poczekaj 15–60 minut albo usuń blokadę w bazie.
- Wtyczka cache’ująca trzyma stary ekran logowania — wyczyść cache i cookies w przeglądarce, spróbuj w trybie incognito.
- Cookies są zablokowane dla Twojej domeny — sprawdź ustawienia przeglądarki.
Czy ktoś, kto ma dostęp do bazy, może obejść tę metodę?
Tak — każdy, kto ma dostęp do wp_users, ma pełną kontrolę nad Twoim WordPressem. Dlatego dane do phpMyAdmin i FTP traktuj jak klucze do mieszkania: nie wysyłaj ich pocztą, nie zapisuj w publicznych dokumentach, używaj osobnych loginów dla osób, które potrzebują dostępu tylko czasowo.
Podsumowanie
Utracone hasło admina WordPressa to nie koniec świata. Trzy metody — phpMyAdmin z funkcją MD5, functions.php z wp_set_password, albo jedno polecenie WP-CLI — dają Ci dostęp w kilka minut. Najważniejsze, żeby zaraz po odzyskaniu kontroli ustawić nowe hasło przez standardowy formularz w panelu, usunąć wszelkie tymczasowe kody i skonfigurować SMTP, żeby przyszły reset przez email faktycznie działał.
A jeśli chcesz mieć pewność, że nigdy więcej nie będziesz grzebać w bazie o 23:00 — zainwestuj 5 minut w menedżer haseł. Bitwarden jest darmowy, Open Source i działa na każdym urządzeniu.

