Cattura la query su MySQL nel server

0

Voglio acquisire query su MySQL dalla mia applicazione web sul mio server basato su Linux. La porta MySQL è 3306 e la mia applicazione web è sulla porta 8181. Così ho iniziato a usare tcpdump come segue:

# tcpdump -x "port 3306"

Ora sfoglio la mia applicazione e faccio alcune query a Data-Base ma non ottengo nulla in tcpdump console. Ho anche provato questo:

# tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
  if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) {
    if (defined $q) { print "$q\n"; }
    $q=$_;
  } else {
    $_ =~ s/^[ \t]+//; $q.=" $_";
  }
}'

Ma non ho neanche niente. Io davvero non so qual è il problema. Quando ho controllato il codice servlet sul mio server, posso trovare che la connessione Data-Base è stabilita sulla porta 3306:

Class.forName("com.mysql.jdbc.Driver");
    cnn = DriverManager.getConnection("jdbc:mysql://localhost:3306/OTP?useUnicode=true&characterEncoding=UTF-8", "blahblah", "blahblah");

qualcuno può aiutarmi con questo?

    
posta A23149577 30.09.2014 - 12:03
fonte

3 risposte

1

Ok, l'ho capito. Poiché l'applicazione invia query locali al database locale, per catturare queste query dovrei catturare lo pacchetti con tcpdump :

# tcpdump -xx -i lo

Funziona perfettamente.

    
risposta data 01.10.2014 - 10:08
fonte
0

Puoi utilizzare Jet Profiler per catturare i tuoi querys ed è un programma multipiattaforma e puoi scaricare una versione gratuita.

    
risposta data 30.09.2014 - 18:45
fonte
0

In MySQL:

SET GLOBAL general_log = 'ON';

Con la Query seguente è possibile controllare, dove sono registrati i dati e se la registrazione è abilitata:

SHOW VARIABLES LIKE '%general_log%';
    
risposta data 01.10.2014 - 15:59
fonte

Leggi altre domande sui tag