/ / Spor MySQL Forespørgsler med mysqlsniffer på Ubuntu

Spor MySQL Forespørgsler med mysqlsniffer på Ubuntu

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

Svaret: Brug en modificeret netværkssniffer til at analysere MySQL-pakkerne og afkode dem. Du skal gøre lidt sammenstilling, 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.

Først skal du installere libpcap-dev, som er udviklingsbiblioteket, der giver en applikation mulighed for at snuse netværkspakker.

sudo apt-get install libpcap-dev

Lad os nu lave et bibliotek, downloade kildekoden og kompilere det

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 ved navn mysqlsniffer i vores kildekatalog. Du kan kopiere det, hvor du vil (et sted i stien ville være nyttigt)

For at køre mysqlsniffer skal du specificere den netværksgrænseflade, som MySQL lytter til. For mig er det eth0.

sudo / sti / til / mysqlsniffer eth0

Masser af ting begynder at flyve forbi ... lad os filtrere det ud lidt mere, så vi bare kan få spørgsmålene 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_mode
192.168.73.1.2622> server: COM_QUERY: SET SESSION sql_mode = ”
192.168.73.1.2622> server: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> server: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> server: COM_QUERY: VIS FULLE COLUMNS FRA `db2842_howto`.`wp_users`

Ah, nu er vi der ... alle slags forespørgselsinformation uden at skulle starte MySQL igen.

Her er de fulde indstillinger for kommandoen:

Brug: mysqlsniffer [OPTIONS] INTERFACE

MULIGHEDER:
–Port N lyt efter MySQL på portnummer N (standard 3306)
–Verbose Vis ekstra pakkeoplysninger
–Tcp-ctrl Vis TCP-kontrolpakker (SYN, FIN, RST, ACK)
–Net-hdrs Vis vigtige IP- og TCP-headerværdier
–No-mysql-hdrs Vis ikke MySQL-header (pakke-ID og længde)
–Stat Vis tilstand
–V40 MySQL-server er version 4.0
–Dump Dump alle pakker i hex
–Hjælp Udskriv dette

Original kildekode og mere information på:
http://hackmysql.com/mysqlsniffer

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