Ubuntu पर mysqlsniffer के साथ MySQL क्वेरी ट्रैक करें
आपको एक उत्पादन डेटाबेस सर्वर मिला है, और आप क्वेरी लॉगिंग को सक्षम नहीं कर सकते ... तो आप कैसे डेटाबेस के खिलाफ निष्पादित होने वाले प्रश्नों को देखते हैं?
उत्तर: MySQL पैकेट को पार्स करने और उन्हें डीकोड करने के लिए एक संशोधित नेटवर्क स्निफर का उपयोग करें। आपको थोड़ा सा संकलन करना होगा, लेकिन यह इसके लायक होगा। ध्यान दें कि यह आमतौर पर स्थानीय कनेक्शन के लिए काम नहीं करेगा, हालांकि आप का प्रयास करने के लिए स्वागत है.
सबसे पहले, आपको libpcap-dev को स्थापित करने की आवश्यकता है, जो कि विकास पुस्तकालय है जो नेटवर्क पैकेट को सूंघने की अनुमति देता है.
sudo apt-get install लेबपैक-देव
अब एक डायरेक्टरी बनाते हैं, सोर्स कोड डाउनलोड करते हैं और इसे कंपाइल करते हैं
mkdir mysqlsniffer
सीडी 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: सेट सत्र sql_mode = ”
192.168.73.1.2622> सर्वर: COM_QUERY: सेट NAMES utf8
192.168.73.1.1636> सर्वर: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> सर्वर: COM_QUERY: 'db2842_howto' से '' 'पूर्ण' शब्दों को दिखाएँ।
आह, अब हम वहाँ हैं ... सभी प्रकार की क्वेरी जानकारी, MySQL को पुनरारंभ किए बिना.
यहाँ कमांड के लिए पूर्ण विकल्प हैं:
उपयोग: mysqlsniffer [विकल्प] आंतरिक
विकल्प:
-पोर्ट N पोर्ट संख्या N पर MySQL के लिए सुनो (डिफ़ॉल्ट 3306)
-क्रिया अतिरिक्त पैकेट जानकारी दिखाएँ
-tcp-ctrl टीसीपी नियंत्रण पैकेट दिखाएं (SYN, FIN, RST, ACK)
-net-hdrs प्रमुख आईपी और टीसीपी हेडर मान दिखाएँ
-no-mysql-hdrs MySQL हेडर (पैकेट आईडी और लंबाई) न दिखाएं
-राज्य दिखाएँ स्थिति
-v40 MySQL सर्वर संस्करण 4.0 है
-सभी पैकेट को हेक्स में डंप करें
-इसे प्रिंट करने में मदद करें
मूल स्रोत कोड और अधिक जानकारी:
http://hackmysql.com/mysqlsniffer
यदि आप एक विकास सर्वर पर चल रहे हैं, तो क्वेरी लॉगिंग को चालू करना आसान होगा.