Utilisation de mysqlsniffer
But et utilité :
Pour pouvoir − en temps réel − visualiser et analyser et/ou capturer les requêtes effectuées sur un serveur ce petit logiciel est quasiment indispensable.
Il permet d’afficher en détails les requêtes effectuées, les résultats de ces dernières,…
Il est disponible sur le site : http://hackmysql.com/mysqlsniffer
Installation :
Sous Debian, il faut au préalable installer libpcap-dev : aptitude install libpcap-dev
.
Puis :
mkdir
mysqlsniffer
cd mysqlsniffer
wget http://hackmysql.com/code/mysqlsniffer.tgz
tar zxvf mysqlsniffer.tgz
gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c
Utilisation :
Attention ! La connexion à « écouter » doit se faire en TCP, il faut mettre 127.0.0.1 au lieu de localhost dans la configuration du client pour avoir un résultat !
Ensuite il suffit de lancer la commande mysqlsniffer
et de lire le résultat dans la console ou le stocker dans un fichier pour une analyse ultérieure.
Exemple de dump :
Une simple requête (SELECT) qui récupère des préférences :
127.0.0.1.47254 > server: ID 0 len 26 COM_QUERY: SELECT * FROM preferences
server > 127.0.0.1.47254: ID 1 len 1 6 Fields
ID 2 len 76 Field: preferences.categorie
ID 3 len 66 Field: preferences.type
ID 4 len 62 Field: preferences.id
ID 5 len 82 Field: preferences.defaultvalue
ID 6 len 68 Field: preferences.label
ID 7 len 80 Field: preferences.description
ID 8 len 5 End
ID 9 len 119 || diagnostic | text | departement_favori | 57 | Département par défaut | Doit être un des départements français (format numérique) ||
ID 10 len 49 || synchro | text | login | XXX | Votre compte utilisateur | ||
ID 11 len 61 || divers | text | nb_clients_par_page | 30 | Nombre de clients listés | ||
ID 12 len 61 || divers | text | nb_projets_par_page | 30 | Nombre de projets listés | ||
ID 13 len 48 || synchro | String | password | XXX | Votre mot de passe | ||
ID 14 len 66 || diagnostic | text | rapport_pcs_2_m3 | 10.6 | Taux de conversion PCS->M3 | ||
ID 15 len 60 || synchro | text | sapid | xxx | Votre identifiant de compte (SAPID) | ||
ID 16 len 5 End
Une autre façon de récupérer toutes les requêtes exécutées sur le serveur en écoute : TCPDUMP
Cette méthode ne permet pas de récupérer les infos complètes
tcpdump -i lo -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|SHOW)/i) {
if (defined $q) { print "$q\n"; }
$q=$_;
} else {
$_ =~ s/^[ \t]+//; $q.=" $_";
}
}'
On peut trouver de nombreux autres outils pour MYSQL sur le site : http://hackmysql.com/tools avec notamment mysqlreport
Laisser un commentaire