28Jun
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 en cours d'exécution sur la base de données?
La réponse: utilisez un sniffer réseau modifié pour analyser les paquets MySQL et les décoder. Vous devrez faire un peu de compilation, mais ça en vaudra la peine. Notez que cela ne fonctionne généralement pas pour les connexions locales, mais vous pouvez 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
Faisons maintenant un répertoire, téléchargeons le code source et le compilons
mkdir mysqlsniffer
cd mysqlsniffer
wget hackmysql.com /code/ mysqlsniffer.tgz
tar xvfz mysqlsniffer.tgz
gcc -O2 -lpcap-so mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c
A ce stade, nous avons un nouvel exécutable brillant appelé mysqlsniffer dans notre répertoire source. Vous pouvez le copier où vous voulez( quelque part dans le chemin serait utile)
Pour lancer mysqlsniffer, vous devez spécifier l'interface réseau sur laquelle MySQL est en écoute. Pour moi, c'est eth0.
sudo /path/to/ mysqlsniffer eth0
Des tas de choses commencent à voler. .. filtrons un peu plus afin que nous puissions simplement obtenir les requêtes et pas toutes les données en excès.
$ sudo /path/to/ mysqlsniffer -no-mysql-hdrs eth0 |grep COM_QUERY
192.168.73.1.2622 & gt;serveur: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622 & gt;serveur: COM_QUERY: SET SESSION sql_mode = "
192.168.73.1.2622 & gt;serveur: COM_QUERY: SET NAMES utf8
192.168.73.1.1636 & gt;serveur: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636 & gt;serveur: COM_QUERY: SHOW PLEINS COLONNES DE `db2842_howto`.`wp_users`
Ah, maintenant nous sommes. .. toutes sortes d'informations de requête, sans avoir à redémarrer MySQL.
Voici les options complètes pour la commande:
Utilisation: mysqlsniffer [OPTIONS] INTERFACE OPTIONS
:
-port N Écouter MySQL sur le numéro de port N( par défaut 3306)
-verbose Afficher des informations supplémentaires sur les paquets
-tcp-ctrl Afficher TCPpaquets de contrôle( SYN, FIN, RST, ACK)
-net-hdrs Afficher les 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 MySQLserveur est la version 4.0
-dump Dump tous les paquets dans l'hex
-help Imprimer ce
Code source original et plus d'informations à:
http: //hackmysql.com/ mysqlsniffer
Si vous exécutez sur un serveur de développement, il serait plus facile d'activer simplement la requêteenregistrement.