bewaren van sqlcommando's.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

09/04/2019 11:30:43
Quote Anchor link
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
 
PHP hulp

PHP hulp

28/01/2023 14:26:08
 
- Ariën  -
Beheerder

- Ariën -

09/04/2019 11:37:25
Quote Anchor link
Je wilt alle schrijf-queries loggen? En met welk doel?
Gewijzigd op 09/04/2019 11:37:58 door - Ariën -
 
Jan R

Jan R

09/04/2019 11:40:05
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

09/04/2019 11:45:47
Quote Anchor link
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.
Gewijzigd op 09/04/2019 11:48:21 door - Ariën -
 
Ward van der Put
Moderator

Ward van der Put

09/04/2019 12:27:30
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

09/04/2019 12:32:51
Quote Anchor link
Heb je al in de access_log van je site gekeken? Daar kan je ook SQL-injection momenten teugvinden.
 
Aad B

Aad B

09/04/2019 12:36:21
Quote Anchor link
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.
Gewijzigd op 09/04/2019 12:39:58 door Aad B
 
Jan R

Jan R

10/04/2019 11:46:05
Quote Anchor link
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
  • commando (string)
  • tijdstip (datetime)
  • user (string)
  • ip (string)

Jan
 
Thomas van den Heuvel

Thomas van den Heuvel

10/04/2019 15:39:57
Quote Anchor link
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 ...).
Gewijzigd op 10/04/2019 15:41:10 door Thomas van den Heuvel
 
Ward van der Put
Moderator

Ward van der Put

10/04/2019 17:52:35
Quote Anchor link
Of je maakt er een TIMESTAMP van: zo krijg je een prullenbak die je automatisch kunt legen na bijvoorbeeld 30 dagen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.