Rastrea las consultas de MySQL con mysqlsniffer en Ubuntu
Tiene un servidor de base de datos de producción y no puede habilitar el registro de consultas ... así que, ¿cómo ve las consultas que se ejecutan en la base de datos??
La respuesta: use un rastreador de red modificado para analizar los paquetes MySQL y decodificarlos. Tendrás que hacer un poco de compilación, pero valdrá la pena. Tenga en cuenta que esto no suele funcionar para las conexiones locales, aunque puede intentarlo.
Primero, necesita instalar libpcap-dev, que es la biblioteca de desarrollo que permite que una aplicación detecte paquetes de red.
sudo apt-get install libpcap-dev
Ahora vamos a hacer un directorio, descargar el código fuente y compilarlo
mkdir mysqlsniffer
cd mysqlsniffer
wget hackmysql.com/code/mysqlsniffer.tgz
tar xvfz mysqlsniffer.tgz
gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c
En este punto, tenemos un nuevo y brillante ejecutable llamado mysqlsniffer en nuestro directorio de origen. Puedes copiarlo donde quieras (en algún lugar del camino sería útil)
Para ejecutar mysqlsniffer, debe especificar la interfaz de red en la que MySQL está escuchando. Para mi es eth0.
sudo / ruta / a / mysqlsniffer eth0
Un montón de cosas empiezan a volar ... vamos a filtrarlo un poco más para que podamos obtener las consultas y no todo el exceso de datos.
$ sudo / path / to / mysqlsniffer -no-mysql-hdrs eth0 | grep COM_QUERY
192.168.73.1.2622> servidor: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622> servidor: COM_QUERY: SET SESSION sql_mode = ”
192.168.73.1.2622> server: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> servidor: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> servidor: COM_QUERY: MOSTRAR COLUMNAS COMPLETAS DE 'db2842_howto'. 'Wp_users'
Ah, ahora estamos ... todo tipo de información de consulta, sin tener que reiniciar MySQL.
Aquí están las opciones completas para el comando:
Uso: mysqlsniffer [OPCIONES] INTERFAZ
OPCIONES:
-puerto N Escuche MySQL en el número de puerto N (predeterminado 3306)
-detallado Mostrar información adicional del paquete
-tcp-ctrl Mostrar paquetes de control TCP (SYN, FIN, RST, ACK)
-net-hdrs Mostrar los principales valores de encabezado IP y TCP
-no-mysql-hdrs No mostrar el encabezado de MySQL (ID de paquete y longitud)
-estado mostrar estado
-El servidor MySQL v40 es la versión 4.0
-volcar Volcar todos los paquetes en hexadecimal
-ayuda Imprimir esto
Código fuente original y más información en:
http://hackmysql.com/mysqlsniffer
Si está ejecutando en un servidor de desarrollo, sería más fácil simplemente activar el registro de consultas.