Consulta de captura a MySQL en el servidor

0

Quiero capturar consultas a MySQL desde mi aplicación web en mi servidor basado en Linux. El puerto de MySQL es 3306 y mi aplicación web está en el puerto 8181. Así que empecé a usar tcpdump de la siguiente manera:

# tcpdump -x "port 3306"

Ahora exploro mi aplicación y hago algunas consultas a la Base de datos, pero no obtengo nada en la consola tcpdump . También probé esto:

# 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.=" $_";
  }
}'

Pero tampoco tengo nada. Realmente no sé cuál es el problema. Cuando verifiqué el código servlet en mi servidor, puedo encontrar que la conexión de la base de datos está establecida en el puerto 3306:

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

¿Puede alguien ayudarme con esto?

    
pregunta A23149577 30.09.2014 - 12:03
fuente

3 respuestas

1

Ok, lo descubrí. Como la aplicación envía la consulta local a la base de datos local, para capturar estas consultas, debo capturar lo paquetes con tcpdump :

# tcpdump -xx -i lo

Esto funciona perfectamente.

    
respondido por el A23149577 01.10.2014 - 10:08
fuente
0

Puede utilizar Jet Profiler para detectar sus consultas y es un programa multiplataforma y puede descargar una versión gratuita.

    
respondido por el Quethzel 30.09.2014 - 18:45
fuente
0

En MySQL:

SET GLOBAL general_log = 'ON';

Con la siguiente consulta, puede verificar dónde se registran los datos y si el registro está habilitado:

SHOW VARIABLES LIKE '%general_log%';
    
respondido por el Tream 01.10.2014 - 15:59
fuente

Lea otras preguntas en las etiquetas