Hjemmeside » hvordan » Spor MySQL Queries med mysqlsniffer på Ubuntu

    Spor MySQL Queries med mysqlsniffer på Ubuntu

    Du har en produksjonsdatabasetjener, og du kan ikke aktivere spørringslogging ... så hvordan ser du spørsmålene som blir utført mot databasen?

    Svaret: Bruk et modifisert nettverkssniffer for å analysere MySQL-pakkene og dekode dem. Du må gjøre litt kompilering, men det vil være verdt det. Vær oppmerksom på at dette vanligvis ikke vil fungere for lokale tilkoblinger, selv om du er velkommen til å prøve.

    Først må du installere libpcap-dev, som er utviklingsbiblioteket som lar et program snuse nettverkspakker.

    sudo apt-install install libpcap-dev

    La oss nå lage en katalog, laste ned 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 pakke_handlers.c misc.c

    På dette tidspunktet har vi en skinnende ny kjørbarhet kalt mysqlsniffer i vår kildekatalog. Du kan kopiere den uansett hvor du vil (et sted i banen ville være nyttig)

    For å kjøre mysqlsniffer må du angi nettverksgrensesnittet som MySQL lytter på. For meg er det eth0.

    sudo / bane / til / mysqlsniffer eth0

    Massevis av ting begynner å flyr av ... la oss filtrere det litt ut, så vi kan bare få spørsmålene og ikke alle overskytende 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 kolonner fra 'db2842_howto'. 'Wp_users'

    Ah, nå er vi ... alle slags spørringsinformasjon, uten å måtte starte MySQL på nytt.

    Her er de fulle alternativene for kommandoen:

    Bruk: mysqlsniffer [OPTIONS] INTERFACE

    ALTERNATIVER:
    -port N Lytt til MySQL på portnummer N (standard 3306)
    -verbose Vis ekstra pakkeinformasjon
    -tcp-ctrl Vis TCP-kontrollpakker (SYN, FIN, RST, ACK)
    -net-hdrs Vis store IP- og TCP-headerverdier
    -no-mysql-hdrs Ikke vis MySQL header (pakke ID og lengde)
    -state show state
    -v40 MySQL-serveren er versjon 4.0
    -dump Dump alle pakker i heks
    -hjelp Skriv ut dette

    Original kildekode og mer informasjon på:
    http://hackmysql.com/mysqlsniffer

    Hvis du kjører på en utviklingsserver, ville det være lettere å bare slå på spørringslogging.