Αρχική σελίδα » πως να » Παρακολουθήστε τα ερωτήματα MySQL με το mysqlsniffer στο Ubuntu

    Παρακολουθήστε τα ερωτήματα MySQL με το mysqlsniffer στο Ubuntu

    Έχετε έναν διακομιστή βάσης δεδομένων παραγωγής και δεν μπορείτε να ενεργοποιήσετε την καταγραφή ερωτημάτων ... έτσι πώς βλέπετε τα ερωτήματα που εκτελούνται έναντι της βάσης δεδομένων?

    Η απάντηση: χρησιμοποιήστε ένα τροποποιημένο δίκτυο sniffer για να αναλύσετε τα πακέτα MySQL και να τα αποκωδικοποιήσετε. Θα χρειαστεί να κάνετε λίγη σύνταξη, αλλά αξίζει τον κόπο. Σημειώστε ότι αυτό συνήθως δεν θα λειτουργήσει για τοπικές συνδέσεις, αν και είστε ευπρόσδεκτοι να δοκιμάσετε.

    Πρώτον, πρέπει να εγκαταστήσετε το libpcap-dev, το οποίο είναι η βιβλιοθήκη ανάπτυξης που επιτρέπει σε μια εφαρμογή να οσφραίνομαι πακέτα δικτύου.

    sudo apt-get να εγκαταστήσετε το libpcap-dev

    Τώρα, ας δημιουργήσουμε έναν κατάλογο, να κατεβάσετε τον πηγαίο κώδικα και να τον μεταγλωττίσετε

    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

    Σε αυτό το σημείο, έχουμε ένα λαμπερό νέο εκτελέσιμο με όνομα mysqlsniffer στον κατάλογο πηγής μας. Μπορείτε να το αντιγράψετε οπουδήποτε θέλετε (κάπου στο δρόμο θα ήταν χρήσιμο)

    Για να εκτελέσετε το mysqlsniffer, πρέπει να καθορίσετε τη διεπαφή δικτύου που ακούει η MySQL. Για μένα, είναι eth0.

    sudo / path / to / mysqlsniffer eth0

    Τα φορτία των πτήσεων αρχίζουν να πετούν από ... ας το φιλτράρουμε λίγο περισσότερο ώστε να μπορούμε απλά να πάρουμε τα ερωτήματα και όχι όλα τα επιπλέον δεδομένα.

    $ sudo / path / to / mysqlsniffer -no-mysql-hdrs eth0 | grep COM_QUERY

    192.168.73.1.2622> διακομιστής: COM_QUERY: SELECT @@ sql_mode
    192.168.73.1.2622> διακομιστής: COM_QUERY: SET SESSION sql_mode = "
    192.168.73.1.2622> διακομιστής: COM_QUERY: SET NAMES utf8
    192.168.73.1.1636> διακομιστής: COM_QUERY: SELECT @@ SQL_MODE
    192.168.73.1.1636> server: COM_QUERY: ΔΕΙΞΤΕ ΠΛΗΡΕΣ ΣΤΗΛΗ ΑΠΟ 'db2842_howto'. 'Wp_users'

    Αχ, τώρα είμαστε ... όλα τα είδη των πληροφοριών ερωτήματος, χωρίς να χρειάζεται να επανεκκινήσετε MySQL.

    Ακολουθούν οι πλήρεις επιλογές για την εντολή:

    Χρήση: mysqlsniffer [OPTIONS] INTERFACE

    ΕΠΙΛΟΓΕΣ:
    -θύρα N Ακούστε για MySQL στον αριθμό θύρας N (προεπιλογή 3306)
    -verbose Εμφάνιση επιπλέον πληροφοριών πακέτων
    -tcp-ctrl Εμφάνιση πακέτων ελέγχου TCP (SYN, FIN, RST, ACK)
    -net-hdrs Εμφάνιση σημαντικών τιμών κεφαλίδων IP και TCP
    -no-mysql-hdrs Να μην εμφανίζεται η κεφαλίδα MySQL (αναγνωριστικό πακέτου και μήκος)
    -κατάσταση Εμφάνιση χώρας
    -v40 MySQL server είναι έκδοση 4.0
    -dump Dump όλα τα πακέτα σε hex
    -help Εκτυπώστε αυτό

    Αρχικό πηγαίο κώδικα και περισσότερες πληροφορίες στη διεύθυνση:
    http://hackmysql.com/mysqlsniffer

    Αν τρέχετε σε διακομιστή ανάπτυξης, θα ήταν ευκολότερο απλά να ενεργοποιήσετε την καταγραφή ερωτημάτων.