Du har en produktionsdatabaseserver, og du kan ikke aktivere forespørgselslogning ... så hvordan ser du, at forespørgsler udføres mod databasen?

Svaret: Brug et modificeret netværkssniffer til at analysere MySQL-pakkerne og afkode dem. Du bliver nødt til at lave lidt kompilering, men det vil være det værd. Bemærk, at dette normalt ikke fungerer for lokale forbindelser, selvom du er velkommen til at prøve.

For det første skal du installere libpcap-dev, som er udviklingsbiblioteket, der gør det muligt for en applikation at snuse netværkspakker.

sudo apt-get install libpcap-dev

Lad os nu lave en mappe, downloade kildekoden og kompilere den

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

På dette tidspunkt har vi en skinnende ny eksekverbar navngivet mysqlsniffer i vores kilde bibliotek. Du kan kopiere det, uanset hvor du vil (et sted i stien ville være nyttigt)

For at køre mysqlsniffer skal du angive den netværksinterface, MySQL lytter til. For mig er det eth0.

sudo /path/to/mysqlsniffer eth0

Masser af ting begynder at flyve ved ... lad os filtrere det lidt mere, så vi kan bare få forespørgsler og ikke alle de overskydende data.

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

192.168.73.1.2622 > server: COM_QUERY: SELECT @@sql_mode192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=”192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8192.168.73.1.1636 > server: COM_QUERY: SELECT @@SQL_MODE192.168.73.1.1636 > server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`

Åh, nu er vi ... alle slags forespørgselsoplysninger, uden at skulle genstarte MySQL.

Her er de fulde muligheder for kommandoen:

Anvendelse: mysqlsniffer [OPTIONS] INTERFACE

MULIGHEDER:-Port N Lyt til MySQL på portnummer N (standard 3306)-Verbose Vis ekstra pakkeoplysninger-Tcp-ctrl Vis TCP-kontrolpakker (SYN, FIN, RST, ACK)-Net-hdrs Vis store IP- og TCP-header-værdier-No-mysql-hdrs Vis ikke MySQL-overskrift (pakke ID og længde)-Stat Vis tilstand-V40 MySQL-serveren er version 4.0-Dump Dump alle pakker i hex-Hjælp Print dette

Original kildekode og flere oplysninger på:http://hackmysql.com/mysqlsniffer

Hvis du kører på en udviklingsserver, ville det være nemmere at bare aktivere forespørgselslogning.

Top Tips:
Kommentarer: