Ehrlich gesagt war dies das erste Mal, dass mir so etwas passiert ist, aber dennoch ist es schon sehr lästig wenn man sich nicht mehr als Administrator am eigenen WordPress Blog anmelden kann. Beim Kopieren eines Blogs auf einen anderen Server ist wohl etwas schief gelaufen und schon konnte ich mich am Backend nicht mehr anmelden.

Die Lösung für dieses Problem ist schockierend einfach, so lange man noch Zugang zur Datenbank hat. Sollte man die Zugangsdaten für diese auch vergessen haben, ist das auch nicht so schlimm, denn diese stehen in der Datei wp-config.php im Root-Directory eurer WordPress Installation und diese könnt ihr euch mittels FTP holen und dann die Zugangsdaten auslesen.

Was wir nun tun ist ganz einfach, wir legen uns auf der Datenbank einfach einen neuen “sauberen” Admin an um mit diesem dann den “kaputten” im WordPress Backend zu reparieren.

Struktur eines WordPress Benutzers

Die Daten und Einstellungen eines Benutzers werden von WordPress in zwei Tabellen abgelegt. Den Tabellenpräfix “wp_” müsst ihr an euren Präfix anpassen.

  • wp_users
  • wp_usermeta

In der Tabelle wp_users finden sich die einzelnen Benutzer mit ihren Basisinformationen und in wp_usermeta weitere Einstellungen, wie zum Beispiel Rollenzugehörigkeiten.

Neuen Admin-Benutzer anlegen

Dazu melden wir uns mit einen Querytool eurer Wahl, phpmyadmin oder Ähnliches, an euerer Datenbank an und fügen als Erstes den neuen “Reperatur Admin” ein. Dazu insertieren wir Folgendes in die Tabelle wp_users.

Das Statement dazu ist ganz einfach. Vergesst nur nicht, “databasename” durch den Namen eurer Datenbank und “wp_” durch den Tabellenpräfix eurer Installation zu ersetzen. Dieses Statement erzeugt einen Benutzer mit dem Login “repairAdmin” und dem Passwort “repairPassword“, einer etwas sinnlosen Emailadresse und dem Namen “John Doe“. Es sei euch überlassen diese Daten vor dem Einfügen in die Datenbank nach belieben anzupassen.

Die UserId setze ich hier fest mit 4. Bevor ihr euch auch für diese Nummer entscheidet solltet ihr noch in der Tabelle wp_users überprüfen ob es nicht schon einen Benutzer mit diese Id gibt. Sollte dies der Fall sein wählt bitte eine andere, freie Nummer und setzt sie hier im Statement statt der 4 ein und merkt sich euch.

Select Code
INSERT INTO `databasename`.`wp_users`

(`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`)

VALUES ('4', 'repairAdmin', MD5('repairPassword'), 'john doe', 'test@yourdomain.com', 'http://www.the-engine.at', '2013-02-07 00:00:00', '', '0', 'john doe');

Damit unser neuer Benutzer auch ein Administrator ist müssen wir noch zwei Zeilen in die Tabelle wp_usermeta einfügen. Die erste fügt den Benutzer zur Gruppe der Administratoren hinzu. In diesem Statement müsst ihr wieder “wp_“, sowohl im Tabellennamen als auch im Wert der Spalte “meta_key” (wp_capabilities), durch den Tabellenpräfix eurer Installation und “databasename” durch den Namen eurer Datenbank ersetzen. Außerdem müsst ihr die user_id (4) durch die Nummer ersetzen die ihr im ersten Statement als Id für euren neuen Benutzer vergeben habt.

Select Code
INSERT INTO `databasename`.`wp_usermeta`

(`umeta_id`, `user_id`, `meta_key`, `meta_value`)

VALUES (NULL, '4', 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}');

Das zweite Statement setzt noch das “user_level” auf 10. Eine wichtige Einstellung um den Benutzer zum Administrator zu machen. Auch in diesem Statement müsst ihr wieder “wp_“, sowohl im Tabellennamen als auch im Wert der Spalte “meta_key” (wp_capabilities), durch den Tabellenpräfix eurer Installation und “databasename” durch den Namen eurer Datenbank ersetzen. Außerdem müsst ihr wieder die user_id (4) durch die Nummer ersetzen die ihr im ersten Statement als Id für euren neuen Benutzer vergeben habt.

Select Code
INSERT INTO `databasename`.`wp_usermeta`

(`umeta_id`, `user_id`, `meta_key`, `meta_value`)

VALUES (NULL, '4', 'wp_user_level', '10');

Fertig!

Nun könnt ihr euch mit diesem neuen Benutzer am WordPress Backend anmelden und den bestehenden Admin korrigieren. Also zum Beispiel sein Passwort ändern oder seine Rolle neu setzen. Wenn der “alte” Admin dann wieder funktioniert, könnt ihr euch mit diesem anmelden und den “Reparatur Admin” Benutzer wieder löschen.