Hi,

Is er een standaard manier om alle SQL command's op te slaan in een tabel of moet ik daar zelf een routine voor schrijven?
Het gaat me om de delete, insert en update commando's

Jan
Je wilt alle schrijf-queries loggen? En met welk doel?
Te weten komen wie stommiteiten doet :)
Op 1 of andere manier is er 1 record verwijderd Op zich niet erg omdat het snel gezien is en verbeterd. maar ik zou willen te weten komen door wie. Voor nu is dit te laat maar voor de toekomst misschien niet.

Jan
Ikzelf heb een eigen logging gebouwd in mijn adminpaneel die alle acties logt.
Username, IPadres en nog meer spannende details.

Je kan ook MySQL instructie geven alles te loggen, maar dat logt dan geloof ik alleen ALLE queries, dus ook SELECT.

https://stackoverflow.com/questions/303994/log-all-queries-in-mysql
De log kan dan best groot worden, en is niet echt herleidbaar naar iemand. Daar heeft MySQL ook bovendien geen enkele weet van.
Jan R op 09/04/2019 11:40:05

Op 1 of andere manier is er 1 record verwijderd.

Kunnen de gebruikers rechtstreeks SQL-code uitvoeren? Of kan dat uitsluitend indirect via een gebruikersinterface met knoppen bijvoorbeeld?
Heb je al in de access_log van je site gekeken? Daar kan je ook SQL-injection momenten teugvinden.
Je kan logging aanzetten in MySQL en dan zie je op statement niveau wat er gebeurd. Op elke SQL.
Uiteraard zie je er geen user bij want je logt ongetwijfeld in met één username/password in je database connector.

De groei van de logs kan je beperken door logrotate toe te passen. Logrotate vernieuwt elke dag de log en bewaart een x aantal (in te stellen in dagen) versies in .gz formaat.
Ik gebruik logrotate voor vrijwel alle logs. Loopt je systeem dus nooit vol.
Bedankt voor de info's. Ik zal zelf een logje maken en bij elke insert/update/delete deze loggen en regelmatig leegmaken of opkuisen :)

Ik denk aan volgende velden
  • [li]commando (string)[/li]
    [li]tijdstip (datetime)[/li]
    [li]user (string)[/li]
    [li]ip (string)[/li]

Jan
Je zou natuurlijk in plaats van het permanent wegkieperen van informatie records ook kunnen typeren als zijnde 'verwijderd' mbv een (Boolse) kolom deleted ofzo.

Je queries zullen daar dan wel rekening mee moeten houden (... WHERE deleted=0 ...).
Of je maakt er een TIMESTAMP van: zo krijg je een prullenbak die je automatisch kunt legen na bijvoorbeeld 30 dagen.

Reageren