Massenhafte Zuteilung von Beitragsauthor

  • Affected Version
    WoltLab Suite 5.3

    Servus!

    Ich betreibe nun seit geraumer Zeit ein relativ aktives Forum.

    Leider ist einem Administrator heute ein Missgeschick passiert und es wurden um die 4.000 Benutzerkonten durch die Massenbearbeitung gelöscht und wie ja bekannt ist, können gelöschte Benutzer nicht rückgängig gemacht werden.

    Ich habe nun mittels eines älteren Backups (25.12.2020), das noch von BB 4.1 stammt, die meisten (3.000 von 4.000) Benutzerkonten wieder in wcf1_user einfügen können, nach einigen Anpassungen der SQL versteht sich. Avatare sind weg, Gruppen auch, aber das ist halb so schlimm. Das eigentliche Problem das ich unbedingt beheben möchte ist die Zugehörigkeit der Beiträge, Threads, Kommentare (Galerie und Pinnwand) und Konversationen.

    Ich habe mich hier schon ordentlich umgeschaut, konnte aber nur Themen finden die die einzelne Umstellung behandelten, und das kann ich bei 3.000 geretteten Benutzerkonten wohl schlecht so machen - da werd' ich noch alt.


    Nun zur Frage, hat jemand die nötigen SQL Kenntnisse oder kennt jemand ein Plugin (ich habe keines gefunden), das die Massenbearbeitung ermöglicht? Es gibt eines für die Filebase was ich so gesehen habe aber das brauche ich ausnahmsweise nicht.


    Der folgende Code ist ja grundsätzlich zu verwenden, aber wie erwähnt, das für 3.000 Konten zu machen ist nicht zumutbar.

    SQL
    UPDATE wbb1_post SET userID = neueUserID WHERE username = 'alterUserName';
    UPDATE wbb1_thread SET userID = neueUserID WHERE username = 'alterUserName';
    UPDATE wcf1_conversation SET userID = neueUserID WHERE username = 'alterUserName';
    UPDATE wcf1_conversation_to_user SET participantID = neueUserID WHERE username = 'alterUserName';
    UPDATE wcf1_comment SET userID = neueUserID WHERE username = 'alterUserName';
    UPDATE wcf1_comment_response SET userID = neueUserID WHERE username = 'alterUserName';


    Für Vorschläge oder Einleuchtungen bin ich seeehr dankbar - und meine Community euch sicher auch.


    Mit freundlichen Grüßen und schon mal Danke im Voraus,

    DesertFade.

  • Wie kann so was passieren? Muss das löschen von Benutzern nicht doppelt bestätigt werden? WoltLab


    Nur so eine random Frage Sorry. Wo man wieder bei dem leidigen Thema ist, nicht zu viele Rechte verteilen das kann, auch wenn unbeabsichtigt, nach hinten losgehen.

  • In der Massenbearbeitung erfolgt keine weitere Sicherheitsüberprüfung.

    Ja, wegen den Rechten, das ist auch meine/unsere Schuld, aber was passiert ist, ist passiert und kann ich jetzt leider nicht mehr ändern. Das ganze war ja nicht absichtlich. Aber das ist ja auch nicht das Thema. :)

  • Mal ganz davon ab, wenn ich ein "aktives" Forum betreibe, wäre mein letztes BackUp nicht 3 Monate alt.

    Der folgende Code ist ja grundsätzlich zu verwenden, aber wie erwähnt, das für 3.000 Konten zu machen ist nicht zumutbar.

    Sehr sehr sehr teures Lehrgeld ;)


    Um hier noch etwas sinnvolles beizutragen, vielleicht mal prüfen ob der Hoster einen Snapshot des Servers/Webspace hat, dass BackUp des Hosters, falls vorhanden, wird wahrscheinlich aktueller sein. So könntest du dir viel Datenbankarbeit sparen.

    Edited 3 times, last by VAROZ ().

  • Das Thema um mein Backup und meine Lösungen steht nicht zur Debatte. Leider ist es soweit gekommen. :)


    Der Hoster verwaltet keinerlei Backups oder Snapshots, das ist mir auf meinem dedizierten Server selbst vorbehalten.

  • Also ich würde mich da direkt an WoltLab oder an einen der größeren Entwickler wenden. Der Vorfall ist passiert, daran lässt sich nichts mehr ändern, jetzt kommt es darauf an, den entstandenen Schaden zu reparieren und weiteren Schaden zu verhindern. Und ihr solltet nicht vergessen, die Aufsichtsbehörde zu informieren, denn wenn das ein Benutzer macht, wird das alles sehr viel komplizierter.

  • Ich kann Dir nur mysqldumper empfehlen das Prog erstellt Dir nach Deinen eigenen Settings wenn gewünscht jeden Tag/Nacht ein Backup aller Datenbanken 😎

  • Der Hoster verwaltet keinerlei Backups oder Snapshots, das ist mir auf meinem dedizierten Server selbst vorbehalten.

    Wenn du willst, darfst du dich gerne hier raus bedienen:

    https://github.com/Mightful-No…ster/mightful-noobs.de.sh

    Ist zwar vieles statisch, da für mich angepasst, aber dennoch top.


    Kurz:

    • mysqldump für jede datenbank in eine extra datei
    • rsync auf pfade meiner wahl
    • packen und komprimierieren
    • verschlüsseln mit gpgp
    • hochladen auf eine cloud meiner wahl mit rclone (am Anfang wird dort das gelöscht, was älter als 14 Tage ist)

    So sieht das backupdir bei mir aus:




    und so das verzeichnis, wo das script liegt:


    Reicht funktioniert und ist verschlüsselt.

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

    • Official Post

    Hallo,

    Wenn du willst, darfst du dich gerne hier raus bedienen:

    abgesehen von dem Tippfehler („Bakup“) würde dem Skript ein Lauf durch https://www.shellcheck.net/ und ggf. set -exo pipefail ganz gut tun. Aber auch danach wirkt das ganze Skript unnötig ineffizient und fragil auf mich. Würde ich so nicht einsetzen.

  • abgesehen von dem Tippfehler („Bakup“)

    thanks, ist mir nie aufgefallen :D

    solang es für mich läuft, find ich es in Ordnung :)

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Um das relative einfach zu lösen, kannst du das ganze mittels Join ganz einfach machen, bei vielen Einträgen kann dieser Query leider etwas länger dauern, weil ein Join über Zeichenketten nicht gerade schnell ist :D


    Bitte beachte, das dort nicht unbedingt alle Daten ersetzt werden zu 100% es kann immer noch sein, wenn ein Benutzer sich umbenannt hat, das die Inhalte nicht mehr passen und dann zu einem Gast zugeordnet werden ;)

    Außerdem weiß ich nicht welche Tabelle ihr noch habt, ich habe jetzt auch nicht alle noch überprüft welche es noch gibt und wichtig wären. Damit du aber schon mal so ein Grundgerüst hast wie das ganze Funktioniert :)



    Ein klein wenig OT und so :D

    Naja, wenn du doch weißt das dein Hoster keine Backups machst, warum machst du dann keine selber regelmäßig. Würde ja schon fast reichen, wenn du alle 2-3 Tage eins machst. Natürlich ist jeden Tag optimaler, aber trotzdem. Oder zu not einfach einen bezahlen oder halt ein anders Paket buchen wo das für einen gemacht wird, weil so etwas ist leider wichtig.....

  • Und ihr solltet nicht vergessen, die Aufsichtsbehörde zu informieren

    Ist das nicht übertrieben? Weil:

    Im Falle einer Verletzung des Schutzes personenbezogener Daten meldet der Verantwortliche unverzüglich und möglichst binnen 72 Stunden, nachdem ihm die Verletzung bekannt wurde, diese der gemäß Artikel 55 zuständigen Aufsichtsbehörde, es sei denn, dass die Verletzung des Schutzes personenbezogener Daten voraussichtlich nicht zu einem Risiko für die Rechte und Freiheiten natürlicher Personen führt.

  • Naja, die Verfügbarkeit ist zumindest vorübergehend nicht gegeben, und soweit derzeit bereits absehbar, gingen die Benutzerdaten von 1000 Betroffenen unwiederbringlich verloren. Außerdem werden möglicherweise Daten gelöschter Benutzer versehentlich mit wiederhergestellt. Ich möchte weder raten, den Vorfall zu melden, noch raten, auf die Meldung zu verzichten, aber man sollte das Für und Wider abwägen.

  • Ich habe nun eigentlich soweit das retten und neu zuordnen können, das ich zur Verfügung hatte.

    Für alle stillen Mitleser, hier der SQL Code der jedem Benutzer mittels Namen wieder alles zuordnet:


    Über Performance und anderer Themen dieser Methode lässt sich streiten, aber der wichtigste Zweck wurde erfüllt.

    Eins wurde mir gelehrt, ich sollte öfters Backups anlegen.


    Danke an Cyperghost für den Input!


    Grüße

  • Eins wurde mir gelehrt, ich sollte öfters Backups anlegen.

    Jap. Meiner Meinung nach mindestens täglich.

    Mein Backupkonzept teilt sich wie folgt auf:

    • Mein oben gepostes Skript läuft alle 6h, somit 4 Backups der Dateien pro Tag über 14 Tage hinweg, über Cronjob
    • Da ich Hetzner Cloud Server betreibe, habe ich dort das automatische (tägliche) Backup konfiguriert. Das sind komplette Festplattensnapshots á 7 Stück

    Wenn du Proxmox oder ähnliches bedienst, dann könntest du auch Snapshots ziehen. Das macht jedenfalls die Gesamtwiederherstellung einfacher.

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!