28Jun

Rastree las consultas de MySQL con mysqlsniffer en Ubuntu

click fraud protection

Tiene un servidor de base de datos de producción y no puede habilitar el registro de consultas. .. entonces, ¿cómo ve las consultas que 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 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 a una aplicación olfatear paquetes de red.

sudo apt-get install libpcap-dev

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

instagram viewer

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

sudo /path/to/ mysqlsniffer eth0

Un montón de cosas comienza a volar por. .. vamos a filtrar un poco más para que podamos obtener las consultas y no todos los datos en exceso.

$ sudo /path/to/ mysqlsniffer -no-mysql-hdrs eth0 |grep COM_QUERY

192.168.73.1.2622 & gt;servidor: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622 & gt;servidor: COM_QUERY: SET SESSION sql_mode = "
192.168.73.1.2622 & gt;servidor: COM_QUERY: SET NAMES utf8
192.168.73.1.1636 & gt;servidor: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636 & gt;server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`. wp_users`

Ah, ahora estamos. .. todo tipo de información de consulta, sin tener que reiniciar MySQL.

Estas son las opciones completas para el comando:

Uso: mysqlsniffer [OPCIONES] INTERFAZ

OPCIONES:
-port N Escuchar para MySQL en el número de puerto N( predeterminado 3306)
-verbose Mostrar información adicional del paquete
-tcp-ctrl Mostrar TCPpaquetes de control( 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)
-state Muestra el estado
-v40 MySQLservidor es la versión 4.0
-dump Vuelca todos los paquetes en hexadecimal
-ayuda Imprime este

Código fuente original y más información en:
http: //hackmysql.com/ mysqlsniffer

Si estás ejecutando en un servidor de desarrollo, sería más fácil simplemente activar la consultaexplotación florestal.