Startpagina » hoe » MySQL-query's volgen met mysqlsniffer op Ubuntu

    MySQL-query's volgen met mysqlsniffer op Ubuntu

    U hebt een productiedatabaseserver en u kunt query-logboeken niet inschakelen ... dus hoe ziet u de query's die tegen de database worden uitgevoerd??

    Het antwoord: gebruik een aangepaste netwerksniffer om de MySQL-pakketten te ontleden en te decoderen. Je zult een beetje moeten compileren, maar het is het waard. Merk op dat dit meestal niet zal werken voor lokale verbindingen, hoewel u van harte welkom bent om het te proberen.

    Eerst moet u libpcap-dev installeren, wat de ontwikkelingsbibliotheek is waarmee een toepassing netwerkpakketten kan ruiken.

    sudo apt-get install libpcap-dev

    Laten we nu een map maken, de broncode downloaden en compileren

    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

    Op dit punt hebben we een glanzend nieuw uitvoerbaar bestand genaamd mysqlsniffer in onze brondirectory. Je kunt het kopiëren waar je maar wilt (ergens in het pad zou handig zijn)

    Als u mysqlsniffer wilt uitvoeren, moet u de netwerkinterface opgeven waarnaar MySQL luistert. Voor mij is het eth0.

    sudo / path / to / mysqlsniffer eth0

    Heel veel dingen vliegen voorbij ... laten we het wat meer filteren, zodat we alleen de zoekopdrachten kunnen krijgen en niet alle overtollige gegevens.

    $ 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: LAAT VOLLEDIGE KOLOMMEN VAN 'db2842_howto'. 'Wp_users'

    Ah, nu zijn we ... allerlei soorten query-informatie, zonder MySQL opnieuw te hoeven opstarten.

    Hier zijn de volledige opties voor de opdracht:

    Gebruik: mysqlsniffer [OPTIONS] INTERFACE

    OPTIES:
    -poort N Luister naar MySQL op poortnummer N (standaard 3306)
    -uitgebreid Toon extra pakketinformatie
    -tcp-ctrl TCP-controlepakketten weergeven (SYN, FIN, RST, ACK)
    -net-hdrs Toon belangrijkste IP- en TCP-headerwaarden
    -no-mysql-hdrs Geen MySQL-header (pakket-ID en lengte)
    -staat Toon staat
    -v40 MySQL-server is versie 4.0
    -dump Dump alle pakketten in hex
    -help Print dit

    Originele broncode en meer informatie op:
    http://hackmysql.com/mysqlsniffer

    Als u op een ontwikkelserver werkt, is het eenvoudiger om logboeken voor query's in te schakelen.