Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ausführen des Shell-Befehls von MySQL

Dies ist nicht so sehr eine Antwort auf die Frage, sondern eine Rechtfertigung für diese Art von Funktionalität - und widerspricht damit denen, die sagen würden "Sie sollten etwas anderes tun" oder "Warum sollten Sie das tun".

Ich habe eine Datenbank, in der ich versuche, strenge Regeln einzuhalten - ich will nirgendwo Waisenkinder. Referenzielle Integritätsprüfungen helfen mir dabei auf Tabellenebene, aber ich muss einige der Daten als Dateien im Dateisystem aufbewahren (dies ist das Ergebnis einer direkten Anweisung meines Chefs, keine binären Daten in der Datenbank selbst zu speichern).

Die offensichtliche Lösung hier ist, einen Trigger zu haben, der beim Löschen eines Datensatzes feuert, was dann automatisch die zugehörige externe Datei löscht.

Nun ist mir klar, dass UDFs eine Lösung bieten können, aber das scheint eine Menge C/C++-Arbeit zu sein, um einfach eine Datei zu löschen. Sicherlich würden die Datenbankberechtigungen selbst zumindest einige bieten Sicherheit vor möglichen Angreifern.

Jetzt ist mir klar, dass ich ein Shell-Skript oder ähnliches schreiben könnte, das den Tabelleneintrag löschen und dann die zugehörige Datei löschen könnte, aber das liegt wiederum außerhalb der Domäne der Datenbank selbst . Wie mir ein alter Ausbilder einmal sagte:"Die Geschäftsregeln sollten sich in den Regeln der Datenbank widerspiegeln". Wie man deutlich sieht, kann ich das mit MySQL nicht erzwingen.