/ / / Seguimiento de consultas MySQL con mysqlsniffer en Ubuntu

Rastree consultas MySQL con mysqlsniffer en Ubuntu

Tiene un servidor de base de datos de producción y no puede habilitar el registro de consultas ... entonces, ¿cómo ve que las consultas se ejecutan en la base de datos?

La respuesta: use un sniffer de red modificado para analizar los paquetes MySQL y decodificarlos. Tendrás que compilar un poco, pero valdrá la pena. Tenga en cuenta que esto no suele funcionar para las conexiones locales, aunque puede intentarlo.

Primero, debe 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 hagamos un directorio, descarguemos el código fuente y compilemos

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 ejecutable brillante llamado mysqlsniffer en nuestro directorio fuente. Puedes copiarlo donde quieras (en algún lugar de la ruta sería útil)

Para ejecutar mysqlsniffer, debe especificar la interfaz de red en la que está escuchando MySQL. Para mí, es eth0.

sudo / ruta / a / mysqlsniffer eth0

Un montón de cosas comienzan a volar ... filtremos un poco más para que podamos obtener las consultas y no todo el exceso de datos.

$ sudo / ruta / a / 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> servidor: 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 ahí ... 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
–Port N Escucha MySQL en el número de puerto N (predeterminado 3306)
–Verbose Muestra información adicional del paquete
–Tcp-ctrl Muestra los paquetes de control TCP (SYN, FIN, RST, ACK)
–Net-hdrs Muestra los principales valores de encabezado IP y TCP
–No-mysql-hdrs No muestra el encabezado MySQL (ID y longitud del paquete)
–Estado Mostrar estado
–V40 MySQL server es la versión 4.0
–Dump Volcar todos los paquetes en hexadecimal
–Ayuda a 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 activar el registro de consultas.