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 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 <TYPE var string (509) SIZE 50>
        ID 3 len 66 FIELD: preferences.type <TYPE var string (509) SIZE 50>
        ID 4 len 62 FIELD: preferences.id <TYPE var string (1021) SIZE 255>
        ID 5 len 82 FIELD: preferences.defaultvalue <TYPE BLOB (4604) SIZE 65535>
        ID 6 len 68 FIELD: preferences.label <TYPE var string (509) SIZE 255>
        ID 7 len 80 FIELD: preferences.description <TYPE BLOB (4604) SIZE 65535>
        ID 8 len 5 END <warnings 0>
        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 <warnings 0>

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

1
2
3
4
5
6
7
8
9
tcpdump -i lo -s 0 -l -w - dst port 3306 | strings | perl -e '
while(&lt;&gt;) { 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

Tagués avec : , , , , ,

Laisser un commentaire

Votre adresse de messagerie 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.