A MySQL lekérdezések követése a mysqlsniffer segítségével az Ubuntu-on
Van egy termelési adatbázis-kiszolgálója, és nem tudja engedélyezni a lekérdezési naplózást… így látja, hogy az adatbázishoz végrehajtott lekérdezések milyenek??
A válasz: használjon módosított hálózatot a MySQL csomagok elemzésére és dekódolására. Kicsit fordítanod kell, de megéri. Ne feledje, hogy ez általában nem a helyi kapcsolatoknál működik, bár szívesen próbálkozhat.
Először telepítenie kell a libpcap-dev-et, amely a fejlesztőkönyvtár, amely lehetővé teszi az alkalmazásnak a hálózati csomagok szippantását.
sudo apt-get install libpcap-dev
Most készítsünk egy könyvtárat, töltsük le a forráskódot, és fordítsuk le
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
Ezen a ponton a forráskönyvtárunkban van egy mysqlsniffer nevű fényes, új végrehajtható fájl. Bármikor tetszés szerint másolhatja (hasznos lehet valahol az útvonalon)
A mysqlsniffer futtatásához meg kell adnia a MySQL által hallgatott hálózati csatolót. Számomra ez az eth0.
sudo / path / to / mysqlsniffer eth0
A cuccok elkezdenek repülni… szűrjük ki egy kicsit, hogy csak megkapjuk a lekérdezéseket, és nem az összes többletadatot.
$ sudo / path / to / mysqlsniffer -no-mysql-hdrs eth0 | grep COM_QUERY
192.168.73.1.2622> szerver: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622> szerver: COM_QUERY: SET SESSION sql_mode = ”
192.168.73.1.2622> szerver: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> szerver: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> szerver: COM_QUERY: FULL COLUMNS 'db2842_howto' megjelenítéséhez. 'Wp_users'
Ah, most ott van mindenféle lekérdezési információ, anélkül, hogy újra kellene indítanunk a MySQL-t.
Íme a parancs teljes opciói:
Használat: mysqlsniffer [OPCIÓK] INTERFACE
OPCIÓK:
-N port (MySQL) hallgatása az N porton (alapértelmezett 3306)
-verbose Extra csomaginformációk megjelenítése
-tcp-ctrl A TCP vezérlőcsomagok megjelenítése (SYN, FIN, RST, ACK)
-net-hdrs Főbb IP és TCP fejléc értékek megjelenítése
-no-mysql-hdrs Ne mutasson MySQL fejlécet (csomagazonosító és hossz)
-állapot Megjelenítés állapota
-v40 A MySQL szerver 4.0-s verzió
-dump Dump minden csomag hexán
-help Nyomtatás
Eredeti forráskód és további információk:
http://hackmysql.com/mysqlsniffer
Ha fejlesztői kiszolgálón fut, könnyebb lenne a lekérdezési naplózást bekapcsolni.