Mysql Delete ohne Where Klausel untersagen

Manuela

Aktives Mitglied
Hallo,
ich habe ein Problem bei uns in der Firma.

Wir haben eine Mysql (MyISAM) -Datenbank und mehrere Clients (java Programm)
gestern ist uns folgendes passiert wir bekamen keine Daten in den Clients mehr angezeigt.

Daraufhin habe ich die Datenbank überprüfft und festgestellt das eine Tabelle die immer Daten hatte leer war. und KEINER kann ein "Delete From tabelle" ausführen.
ich habe den Quellcode (java-Programm)geprüft und habe nur eine Stelle die Ein Delete auf die besagte Tabelle macht aber nur mit der Where Klausel.

Irgendwie wurde ein Delete ohne Where Klausel durchgeführt (im Programm oder in den Proceduren)
Ich konnte die Daten durch ein Backup wieder einspielen so das das Programm wieder funktionierte.

so nun meine Frage: ich würde gerne verhindern das es ein DELETE FROM Tabelle nicht ausgeführt wird wenn keine WHERE Klausel vorhanden ist.
ich habe mir gedacht das in einen Trigger zu packen ??? aber wie ???
ist das eine gute idee (denn ich will nicht das Programm ändern) ???

oder kann man das anders lösen???
wenn ja wie ???

Danke und einen Guten rutsch ins neue Jahr.
 

madboy

Top Contributor
Das bringt meiner Meinung nach nicht viel, wenn nur delete mit where abgesetzt werden darf. Es könnte ja jemand auf die Idee kommen,
Code:
delete from table where 1=1
zu schreiben ;-)

Was mehr nützen dürfte, wäre delete grundsätzlich zu untersagen oder nur zu gestatten wenn höchstens X Datensätze betroffen sind. Wie das umgesetzt werden kann weiß ich allerdings nicht :-(
Evtl. gibt's eine Berechtigung für delete auf Datenbankseite.
 

Manuela

Aktives Mitglied
Hallo,
Das ist ja das Problem ich kann kein limit auf Delete setzen, und kann auch nicht in der Datenbank delete verbieten.

uns würde schon ein delete from tabelle ohne Where klausel ausreichen als trigger vielleicht
aber wie kann ich das machen.

Gruß Manuela
 

ice-breaker

Top Contributor
mit Standardbordmitteln nicht möglich, mittels MySQL-Proxy und einem eigenen LUA-Plugin jedoch umsetzbar, bedenke aber, dass es zigtausend Ansätze gibt ein Delete ohne Where mit einem Where zu tarnen, z.B.:
Code:
DELETE FROM table WHERE spalte1 = spalte1
das ist auch immer wahr ;)

Vllt solltest du wirklich generell die DELETE-Befehle verbieten und stattdessen StoredProcedures bereitstellen, die bestimmte Delete-Querys absetzen.
 

DerEisteeTrinker

Bekanntes Mitglied
@ice-breaker

dann hast das gleiche nur auf die Datenbank umgewälzt

@Manuela

Ich gehe mal davon aus, dass du in dem Java-Prog PreparedStatements verwendest :oops: dann bleibt dir nur die Werte, die das Prog übergibt vorher genau zu prüfen und zu schauen, wieviele daten Davon betroffen sind.
Oder du nutzt die Transaktions aus. Wenn du löscht und er alles löscht aus der Datenbank, einfach ein Rollback machen. Ist zwar bei riesen Datenmengen sehr zeit- und speicheraufwändig, aber besser als wenn die Daten weg sind und erst die Datensicherung bemüht werden muss.
 

Manuela

Aktives Mitglied
Hallo,

@DerEisteeTrinker

ich schaue mir jetzt vorher an wieviel Datensätze das delete löschen will und dann wird entschieden ob gelöscht werden darf oder nicht. (LIMIT) ES kann ja nur Max(abhängig von einer anderen Tabelle)
eine bestimmte Anzahl gelöscht werden. Ist die Anzahl größer dann kommt eine Meldung das das nicht geht und somit habe ich das Problem gelöst.

Gruß Manuela
 

DerEisteeTrinker

Bekanntes Mitglied
@fastjack

Dann ist ja das ganze Kommando weg, es soll aber nur untersagt werden, dass ein Delete ohne Where-Klausel nicht geht. Ist aber unschön, wenn dann doch ein Delete mit Where-Klausel abgearbeitet werden soll.

@Manuela

Deine Lösung wird zwar sicher funktionieren, aber das Gelbe vom Ei ist es nicht, weil du ja die Datenbank ewig oft abfragen musst, wenn dann mal ein bissel was gelöscht werden soll. Außerdem kann es dir ja passieren, dass du durch deine Where-Klausel auf mehr Einträge kommst als dein Limit angibt. Sprich du blockierst eine reguläre Anfrage.
Ich würde eher versuchen, die ganze Sache so zu legen, dass nur reguläre Ausdrücke an die Datenbank gehen und ich diese so wenig wie möglich beanspruche.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B MySql DELETE Anweisung gibt Fehler zurück Datenbankprogrammierung 7
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
Juelin MySQL Datenbankmit glassfish und Netbeans Datenbankprogrammierung 18
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
M MySQL Datenbank in Array Datenbankprogrammierung 2
P MySQL- Neues Passwort Datenbankprogrammierung 1
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
sserio SQL oder MySQL Datenbankprogrammierung 44
OnDemand Mysql Query Builder Datenbankprogrammierung 1
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
OnDemand MySql Foreign Key nötig oder unnötig Datenbankprogrammierung 3
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
OnDemand MySQL und mongoDB wann macht was Sinn? Datenbankprogrammierung 11
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
D MYSQL goorm IDE - Wie speichern? Datenbankprogrammierung 0
OnDemand Mysql UPDATE if condition Datenbankprogrammierung 14
D MySQL Geburtsdatum per KW abfragen Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
J MySQL - Primary Key Date,Time vs ID Datenbankprogrammierung 16
ruutaiokwu MySQL: Messwerte, welche stagnieren interpolieren? Datenbankprogrammierung 2
S Datenbank MySQL und Java Datenbankprogrammierung 8
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
J MySQL MySQL Risiken bei Stromausfall minimieren Datenbankprogrammierung 9
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
D MySQL Eibinden des "mysql-connector" in eine fertige Jar Datenbankprogrammierung 3
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
D MySQL Zeilen kumulieren Datenbankprogrammierung 8
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
K Servlet-MySQL DB Datenbankprogrammierung 2
X MySQL Json String in MySQL einfügen. Datenbankprogrammierung 20
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
D Datumsformat aus MySQL ändern Datenbankprogrammierung 15
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K MySQL LAN-MySQL Server mit XAMPP Datenbankprogrammierung 2
R ERModel der Datebanken (ORACLE,MySQL,MS-SQL usw) Datenbankprogrammierung 4
X MySQL In MySQL Funktionen erstellen, wenn Zelle leer dann andere Zelle ändern? Datenbankprogrammierung 9
K Anfängerfrage CSV in MySQL Datenbankprogrammierung 41
I MySQL Wert nachträglich bearbeiten Datenbankprogrammierung 1
N MySQL Datenbank lokal Datenbankprogrammierung 3
B MySQL: Port ändern über GUI? Wo und wie Port ändern? Datenbankprogrammierung 0
B MySQL installieren - silent / User anlegen Datenbankprogrammierung 3
X MySQL Verbindungdsaufbau MySql auf Ubuntu-Server Datenbankprogrammierung 10
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
M MySQL MySQL DATETIME-Import Datenbankprogrammierung 9
P MySQL Connection Global Datenbankprogrammierung 13
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
D JavaFX Anwendung zugriff auf MySQL DB. Datenbankprogrammierung 2
D MySQL Grundsätzliche Fragen zu MySQL Datenbankprogrammierung 3
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
M In MySql Datenbank schreiben Datenbankprogrammierung 6
D mySQL Timestamp in RegularTimePeriod bzw Second Datenbankprogrammierung 3
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
windl MySQL und HSQLDB Datenbankprogrammierung 4
S Anbindung zur mysql von mit Swing und AWT Datenbankprogrammierung 22
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
F BPlaced MySql Datenbank ansprechen Datenbankprogrammierung 5
S MySQL MySQL will einfach nicht, bitte um Rat Datenbankprogrammierung 4
M MySQL Datenbank durchsuchen Datenbankprogrammierung 5
Z MySQL mysql Facharbeit: Tipps und Ideen gesucht Datenbankprogrammierung 5
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
K MySQL Datenbank 2facher Zugriff Datenbankprogrammierung 1
Z MySQL Shopsystem mit mysql und Java Datenbankprogrammierung 8
S [MySQL] Topliste Datenbankprogrammierung 2
H Datenbank-Anbindung Java/MySQL Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
J Dateien in MySQL speichern & indizieren Datenbankprogrammierung 2
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
K MySQL Datenbankbackups Datenbankprogrammierung 5
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
kaoZ HyperSQL vs. MYSQL Datenbankprogrammierung 4
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
V Internationalization mit MySql Datenbankprogrammierung 1
K Adressverwaltung mit MySql und Java? Datenbankprogrammierung 11
M Java Mysql verbinden Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben