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_mode192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=”192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8192.168.73.1.1636 > server: COM_QUERY: SELECT @@SQL_MODE192.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:http://hackmysql.com/mysqlsniffer

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

Top Tips:
Reacties: