Czasami może się zdarzyć, że chcemy dodać nowego użytkownika panelu administracyjnego WordPressa ale jakiegoś powodu nie mamy dostępu do tego panelu. Jednak jeśli mamy dostęp do bazy danych używanej przez naszą stronę, dodanie nowego użytkownika nie będzie problemem. Możemy zrobić to za pomocą SQL bezpośrednio w bazie danych.
Uzyskanie dostępu do panelu administracyjnego i dodanie w nim nowego użytkownika
Najprostszy sposób to:
- zmiana hasła dla obecnego użytkownika,
- dodanie w panelu administracyjnym nowego użytkownika,
- przywrócenie starego hasła.
Na początek dobrze zapisać stare hasło oraz ID wybranego użytkownika. Dane użytkowników znajdziemy w tabeli wp_users
:
SELECT ID, user_login, user_pass FROM wp_users;
Zamiast przedrostka
wp_
w nazwach tabel może być zastosowany inny, zależy to od ustawień danej instancji WordPressa.
Nowego hasła nie zapisujemy w postaci jawnej lecz obliczamy skrót MD5 z hasła i tą wartość ustawiamy w polu user_pass
:
UPDATE wp_users SET user_pass = MD5('nowe_haslo') WHERE ID = 77;
Zamiast 77
podajemy ID użytkownika któremu chcemy zmienić hasło.
Po zmianie hasła możemy zalogować się do panelu administracyjnego, dodać nowego użytkownika, a następnie przywrócić w bazie danych stare hasło.
Dodanie użytkownika WordPressa w bazie danych MySQL
Zamiast zmieniać hasło istniejącemu użytkownikowi i przez panel WordPressa dodawać nowego użytkownika, możemy zrobić to bezpośrednio w bazie danych, wystarczy kilka zapytań SQL. W tym celu należy w tabeli wp_users
dodać podstawowe informacje o nowym użytkowniku:
INSERT INTO wp_users (user_login, user_pass, user_nicename, user_email, user_registered, user_status, display_name) VALUES ('login', MD5('haslo'), 'nazwa_uzytkownika', '[email protected]', NOW(), 0, 'nazwa_uzytkownika');
Po dodaniu użytkownika sprawdzamy i zapamiętujemy jakie jest jego ID. Załóżmy, że jest to 55.
W ostatnim kroku musimy dodać informacje o uprawnieniach naszego nowego użytkownika. Robimy to w tabeli wp_usermeta
:
INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (55, 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'), (55, 'wp_user_level', '10');
W wp_capabilities
i wp_user_level
zamiast wp_
używamy tego samego przedrostka co w nazwach tabel w bazie danych.
Sieć witryn
Zwykle na tym możemy zakończyć i zalogować się do panelu administracyjnego używając nowo założonego konta.
Niestety tak dodane konto nie będzie działać w przypadku, gdy uruchomiliśmy opcję „sieć witryn”. Będzie można zalogować się do panelu administracyjnego, ale na tym koniec:
W celu nadania użytkownikowi praw administratora sieci witryn (superadministratora) należy w tabeli wp_sitemeta
znaleźć rekordy z wartością site_admins
w kolumnie meta_key
:
SELECT * FROM `wp_sitemeta` WHERE `meta_key` = 'site_admins'
W kolumnie meta_value
będzie tablica z PHP przekształcona do ciągu znaków za pomocą funkcji serialize()
. W tabeli tej należy dodać kolejny element zawierający login naszego nowego konta czyli np. pierwotnie mamy a:2:{i:0;s:4:"Adam";i:1;s:3:"Ewa";}
, a po dodaniu naszego konta a:3:{i:0;s:4:"Adam";i:1;s:3:"Ewa";i:2;s:17:"nazwa_uzytkownika";}
.
Po zrobieniu tego aktualizujemy wpis(-y) w tabeli wp_sitemeta
:
UPDATE `wp_sitemeta` SET `meta_value` = 'a:3:{i:0;s:4:"Adam";i:1;s:3:"Ewa";i:2;s:17:"nazwa_uzytkownika";}' WHERE `meta_value` = 'a:2:{i:0;s:4:"Adam";i:1;s:3:"Ewa";}'
Teraz wszystko jest już gotowe i możemy zalogować do panelu WordPressa się jako administrator sieci witryn.