in

Suivre les requêtes MySQL avec mysqlsniffer sur Ubuntu

Vous avez un serveur de base de données de production et vous ne pouvez pas activer la journalisation des requêtes… alors comment voyez-vous les requêtes exécutées sur la base de données?

La réponse: utilisez un renifleur de réseau modifié pour analyser les paquets MySQL et les décoder. Vous devrez faire un peu de compilation, mais cela en vaudra la peine. Notez que cela ne fonctionnera généralement pas pour les connexions locales, bien que vous soyez invité à essayer.

Tout d’abord, vous devez installer libpcap-dev, qui est la bibliothèque de développement qui permet à une application de détecter les paquets réseau.

sudo apt-get install libpcap-dev

Créons maintenant un répertoire, téléchargeons le code source et compilons-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

À ce stade, nous avons un nouvel exécutable brillant nommé mysqlsniffer dans notre répertoire source. Vous pouvez le copier où vous voulez (quelque part dans le chemin serait utile)

Pour exécuter mysqlsniffer, vous devez spécifier l’interface réseau sur laquelle MySQL écoute. Pour moi, c’est eth0.

sudo / chemin / vers / mysqlsniffer eth0

Des tas de trucs commencent à voler … filtrons-les un peu plus afin que nous puissions simplement obtenir les requêtes et non toutes les données en excès.

$ sudo / chemin / vers / mysqlsniffer –no-mysql-hdrs eth0 | grep COM_QUERY

192.168.73.1.2622> serveur: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622> serveur: COM_QUERY: SET SESSION sql_mode = « 
192.168.73.1.2622> serveur: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> serveur: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> serveur: COM_QUERY: AFFICHER LES COLONNES COMPLÈTES DE `db2842_howto`.`wp_users`

Ah, maintenant nous y sommes… toutes sortes d’informations de requête, sans avoir à redémarrer MySQL.

Voici les options complètes de la commande:

Utilisation: mysqlsniffer [OPTIONS] INTERFACE

OPTIONS:
–Port N Écoutez MySQL sur le numéro de port N (3306 par défaut)
–Verbose Afficher des informations supplémentaires sur les paquets
–Tcp-ctrl Afficher les paquets de contrôle TCP (SYN, FIN, RST, ACK)
–Net-hdrs Afficher les principales valeurs d’en-tête IP et TCP
–No-mysql-hdrs Ne pas afficher l’en-tête MySQL (ID et longueur du paquet)
–State Afficher l’état
–V40 MySQL serveur est la version 4.0
–Dump Vider tous les paquets en hexadécimal
–Help Imprimer ceci

Code source original et plus d’informations sur:
http://hackmysql.com/mysqlsniffer

Si vous exécutez sur un serveur de développement, il serait plus facile d’activer simplement la journalisation des requêtes.

Laisser un commentaire

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

Un autre jour, une autre violation de données (et plus encore du week-end)

Comment refuser l'accès aux fichiers ou aux dossiers dans Windows Vista

Comment refuser l’accès aux fichiers ou aux dossiers dans Windows Vista