Wie konnte das passieren?

BuSchu

Neuer Benutzer
Beiträge
4
Ich wollte die Tabelle mysql.user bereinigen, weil da noch Einträge für Hosts drin waren, die wir nicht mehr haben. Ich wollte so etwas tippen:

DELETE FROM mysql.user WHERE host LIKE "nn.nn.nn%";

Aus Versehen ist daraus geworden

DELETE FROM mysql.user WHERE user host LIKE "nn.nn.nn%";

Bewirkt wurde das genaue Gegenteil des beabsichtigten, als hätte ich

DELETE FROM mysql.user WHERE host NOT LIKE "nn.nn.nn%";

eingegeben. War natürlich fatal. Kann sich einer einen Reim darauf machen, wieso die falsche Anweisung so einen Mist gemacht hat?

Es handelt sich um mariadb 10.4.14.

Grüße
Burkhard
 
Werbung:
Das ergibt keinen Sinn oder?
Das "genaue Gegenteil" in der Wirkung ist von hier aus schwer zu beurteilen.
'where user host' sieht nach einem Alias auf eine Spalte in der Where Klause aus. Keine Ahnung was Maria da macht.
Von einem normalen System würde ich eher eine Fehlermeldung bei einer solchen Abfrage erwarten.

Probiere aus was diese oder ähnliche Abfragen ergeben, natürlich mit Select statt Delete.
Mache eine Kopie der Tabelle und versuche Deine Darstellung zu überprüfen. Geschieht es wirklich so, wie Du beschrieben hast?
 
Das war auch mein Gedanke, dass da eher eine Fehlermeldung hätte kommen müssen. Aber wenn "host" als Alias genommen worden wäre, hätte die Abfrage überhaupt nichts löschen dürfen, weil es keinen Treffer hätte geben dürfen. Ergebnis war aber eine nicht mehr zugängliche Datenbank. :-(
 
Werbung:
Wie gesagt, nachstellen und sicher gehen, dass Deine Annahme auch richtig ist, statt Phantome zu jagen.
Ich würde diese DB niemals produktiv nutzen, deswegen kann ich es hier auch nicht nachvollziehen.
Das mit dem Alias war nur eine unwillkürliche Idee.
 
Zurück
Oben