MySQL-query's bijhouden met mysqlsniffer op Ubuntu

Video: MySQL-query's bijhouden met mysqlsniffer op Ubuntu

Video: MySQL-query's bijhouden met mysqlsniffer op Ubuntu
Video: 30 окончательных прогнозов и подсказок на 2020 год 2024, Maart
MySQL-query's bijhouden met mysqlsniffer op Ubuntu
MySQL-query's bijhouden met mysqlsniffer op Ubuntu
Anonim

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 deze 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 vragen 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: SHOW FULL COLUMNS FROM `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: -Port N Luister naar MySQL op poortnummer N (standaard 3306) -Verbose 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 Status tonen -V40 MySQL-server is versie 4.0 -Dump Alle pakketten in hex dumpen -Help Print dit

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

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

Aanbevolen: