Hjemmeside » hvordan » Spor MySQL forespørgsler med mysqlsniffer på Ubuntu

    Spor MySQL forespørgsler med mysqlsniffer på Ubuntu

    Du har en produktionsdatabase-server, 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

    tjære 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 den, 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 / til / 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 / til / 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 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 større IP og TCP header værdier
    -no-mysql-hdrs Vis ikke MySQL-overskrift (pakke ID og længde)
    -tilstand 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.