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 :

  1. mkdir mysqlsniffer
  2. cd mysqlsniffer
  3. wget http://hackmysql.com/code/mysqlsniffer.tgz
  4. tar zxvf mysqlsniffer.tgz
  5. 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

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.