Jak dodać użytkownika WordPressa w bazie danych MySQL

SQL - dodanie użytkownika WordPressa w bazie danychCzasami 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:

  1. zmiana hasła dla obecnego użytkownika,
  2. dodanie w panelu administracyjnym nowego użytkownika,
  3. 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:
panel administracyjny

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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

To prevent spam, URLs are not allowed in comments. All comments are moderated and subject to approval.
Aby zapobiec spamowi, adresy URL nie są dozwolone w komentarzach. Wszystkie komentarze są moderowane i podlegają zatwierdzeniu.