Gelöschten Benutzer aus Backupdaten in PhpBB wiederherstellen

Ach ja, mittlerweile ist es mir schon zum zweiten Mal passiert, dass ein Benutzer, der aus dem Forum unbedingt gelöscht werden wollte, dann doch gerne wieder an den Foren teilnehmen möchte. Problem dabei ist, dass der Benutzer aber in PhpBB gelöscht wurde und seine Postings als Benutzer “Gast” markiert werden. Eine Wiederherstellung funktioniert deshalb nur, wenn man ein Backup der Datenbank vor dem Löschen angelegt hat. Da es sicherlich dem ein oder anderen Admin eines PhpBB Forums auch schonmal so gegangen ist, möchte ich hier eine kurze Anleitung dafür geben.

Vorher aber noch eine kleine Warnung: Ihr arbeitet auf eurer aktiven Datenbank, deshalb macht auf jeden Fall vorher ein Backup!!! Sollte etwas schief gehen, bin ich nicht dafür verantwortlich :-)!

So, das wäre geklärt, also dann mal los:

  1. Als Vorraussetzung für die Wiederherstellung benötigt ihr auf jeden Fall erstmal eine Möglichkeit SQL Befehle in eure Datenbank einzugeben. Das kann zum einen über die Mysql Konsole geschehen oder über Datenbankfrontends wie phpMyAdmin.
  2. Ihr habt beim vorigen Datenbankbackup eine Datei erhalten, die alle Daten als SQL Befehle beinhaltet. Öffnet diese Datei in einem Texteditor (z.B. Notepad++ - Wordpad sollte aber auch ausreichen).
  3. In der alten Datenbankdatei sucht ihr erstmal den Ausdruck “phpbb_users” (das ist die Datenbanktabelle, die das Benutzerprofil beinhaltet). Normalerweise stehen diese Daten relativ weit am Ende eurer Datenbankdatei.
  4. Als ersten Eintrag solltet ihr sowas wie ein “CREATE TABLE ‘phpbb_users’” finden. In diesem Eintrag wird die Struktur der Tabelle in der Datenbank beschrieben. Ihr erkennt hier auch, was für Werte in den einzelnen Feldern gespeichert werden.
  5. Nach der Struktur findet ihr jede Menge “INSERT” Befehle, mit denen die Benutzer in die Datenbank geschrieben werden. Sucht jetzt den Benutzer heraus, der wiederhergestellt werden soll. Ich nehme als Beispiel mal folgende Zeite: INSERT INTO `phpbb_users` VALUES (3, 1, ‘Mustermann’, ‘12345678901234567891234567890’, 1194374869, 0, 1194343956, 1174780185, 1, 512, 1.00, 4, ‘german’, ’d.m.Y, H:i’, 0, 0, 1194204104, 0, 0, NULL, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, ‘395954734460c36ec386a4.jpg’, 1, ‘max@mustermann.de__, ‘’, ‘http://www.mustermann.de’, ‘NRW’, ‘Muster Signatur’, ‘2391bc361d’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, NULL);
  6. Diesen Befehl führt ihr jetzt in eurer Datenbankkonsole aus (in phpMyAdmin geht das unter dem Menüpunkt “SQL”). Ihr solltet dann eine Bestätigung erhalten.
  7. Der Benutzer ist jetzt wieder in der Datenbank vorhanden, als nächstes müssen aber noch seine alten Postings wieder zugeordnet werden. Das geht mit einem “UPDATE” Befehl. Für diesen Updatebefehl benötigt ihr noch die Benutzer-ID und das Login. Die ID steht immer ganz am Anfang von dem “INSERT”, der Benutzerlogin steht an der dritten Stelle. In meinem Fall ist das die “3” und als Benutzerlogin “Mustermann”. Der Updatebefehl lautet dann: UPDATE phpbb_posts SET poster_id=‘3’ WHERE post_username = ‘Mustermann’

Diese Befehle reichen aus, um den Benutzer wieder hinzuzufügen und seine Postings zuzuordnen. Verloren sind allerdings sein Avatarbild und durch die Einträge in post_username sind die Profile nicht direkt anklickbar. Man könnte jetzt mit dem Befehl “UPDATE phpbb_posts SET post_username = ’’ WHERE post_username = ‘Mustermann’” noch den Benutzernamen löschen, aber ich wollte bei mir nicht so viel an der Datenbank herumschrauben und habe das dann entsprechend gelassen. Solltet ihr diese Anleitung auch mal benötigen, gebt doch mal Bescheid, ob bei euch alles funktioniert hat :-)!