Masz serwer produkcyjnej bazy danych i nie możesz włączyć rejestrowania zapytań ... tak jak widzisz kwerendy wykonywane względem bazy danych?
Odpowiedź: użyj zmodyfikowanego sniffera sieciowego, aby przeanalizować pakiety MySQL i je odkodować. Będziesz musiał trochę skompilować, ale warto. Zauważ, że nie będzie to zazwyczaj działać dla połączeń lokalnych, chociaż możesz spróbować.
Najpierw należy zainstalować libpcap-dev, która jest biblioteką programistyczną, która pozwala aplikacji na węszenie pakietów sieciowych.
sudo apt-get install libpcap-dev
Teraz zróbmy katalog, pobierz kod źródłowy i skompiluj go
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
W tym momencie mamy nowy, błyszczący plik wykonywalny o nazwie mysqlsniffer w naszym katalogu źródłowym. Możesz go skopiować tam, gdzie chcesz (przydatne byłoby gdzieś na ścieżce)
Aby uruchomić mysqlsniffer, musisz określić interfejs sieciowy, na którym nasłuchuje MySQL. Dla mnie jest to eth0.
sudo / path / to / mysqlsniffer eth0
Mnóstwo rzeczy zaczyna latać ... ... odfiltrujmy to nieco, abyśmy mogli uzyskać zapytania, a nie wszystkie nadmiarowe dane.
$ sudo / path / to / mysqlsniffer -no-mysql-hdrs eth0 | grep COM_QUERY
192.168.73.1.2622> serwer: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622> serwer: COM_QUERY: SET SESSION sql_mode = "
192.168.73.1.2622> serwer: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> serwer: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> serwer: COM_QUERY: POKAŻ PEŁNE KOLUMNY Z 'db2842_howto'. 'Wp_users'
Ach, teraz mamy ... różne rodzaje informacji o zapytaniach, bez konieczności restartowania MySQL.
Oto pełne opcje polecenia:
Użycie: mysqlsniffer [OPCJE] INTERFACE
OPCJE:
-port N Posłuchaj MySQL na porcie o numerze N (domyślnie 3306)
-verbose Pokaż dodatkowe informacje o pakiecie
-tcp-ctrl Pokaż pakiety sterowania TCP (SYN, FIN, RST, ACK)
-net-hdrs Wyświetla główne wartości nagłówków IP i TCP
-no-mysql-hdrs Nie wyświetlaj nagłówka MySQL (identyfikator i długość pakietu)
-state Pokaż stan
-v40 Serwer MySQL jest w wersji 4.0
-dump Zrzuć wszystkie pakiety na hex
-help Wydrukuj to
Oryginalny kod źródłowy i więcej informacji na:
http://hackmysql.com/mysqlsniffer
Jeśli korzystasz z serwera programistycznego, łatwiej byłoby włączyć rejestrowanie zapytań.