Pagina principala » HOWTO » Urmăriți interogările MySQL cu mysqlsniffer pe Ubuntu

    Urmăriți interogările MySQL cu mysqlsniffer pe Ubuntu

    Aveți un server de bază de date de producție și nu puteți activa înregistrarea interogărilor ... așa cum vedeți interogările care sunt executate împotriva bazei de date?

    Răspunsul: utilizați un sniffer de rețea modificat pentru a analiza pachetele MySQL și pentru a le decoda. Va trebui să faci puțin compilare, dar merită. Rețineți că, de obicei, acest lucru nu va funcționa pentru conexiunile locale, deși sunteți bineveniți să încercați.

    În primul rând, trebuie să instalați libpcap-dev, care este biblioteca de dezvoltare care permite unei aplicații să înșele pachetele de rețea.

    sudo apt-get instala libpcap-dev

    Acum, să facem un director, să preluăm codul sursă și să îl compilam

    mkdir mysqlsniffer

    cd mysqlsniffer

    wget hackmysql.com/code/mysqlsniffer.tgz

    tar xvfz mysqlsniffer.tgz

    gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c pachet_handlers.c misc.c

    În acest moment, avem un executabil strălucitor numit mysqlsniffer în directorul nostru sursă. Puteți să o copiați oriunde doriți (undeva în cale ar fi util)

    Pentru a rula mysqlsniffer, trebuie să specificați interfața de rețea pe care o ascultă MySQL. Pentru mine e eth0.

    sudo / path / to / mysqlsniffer eth0

    Încărcările de lucruri încep să zboare cu ... să o filtram mai mult, astfel încât să putem obține doar interogările și nu toate datele excesive.

    $ sudo / cale / către / 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: SHOW COLUMNELE COMPLETE DIN 'db2842_howto'. 'Wp_users'

    Ah, acum suntem ... tot felul de informații de interogare, fără a fi nevoie să reporniți MySQL.

    Iată opțiunile complete pentru comandă:

    Utilizare: mysqlsniffer [OPTIONS] INTERFACE

    OPȚIUNI:
    -port N Ascultați pentru MySQL pe numărul portului N (implicit 3306)
    -verbose Afișați informații suplimentare despre pachete
    -tcp-ctrl Afișați pachetele de control TCP (SYN, FIN, RST, ACK)
    -net-hdrs Afișați valorile majore IP și TCP header
    -no-mysql-hdrs Nu afișați antetul MySQL (ID-ul pachetului și lungimea)
    -stat Afișați statul
    -v40 Serverul MySQL este versiunea 4.0
    -dump Dump toate pachetele în hex
    -ajutor Print this

    Cod sursă original și mai multe informații la:
    http://hackmysql.com/mysqlsniffer

    Dacă rulați pe un server de dezvoltare, ar fi mai ușor să activați logarea interogărilor.