MySQL हवा पर। SQL प्रश्नों की निगरानी करें

छवि
यह समझना कि यह या वह सीएमएस कैसे काम करता है, आपको काम को सुविधाजनक बनाने के लिए विभिन्न उपकरणों का उपयोग करना होगा।
डेटा के डेटाबेस के साथ सबसे दिलचस्प विषय काम कर रहा है। स्वाभाविक रूप से, क्वेरी और क्वेरी परिणामों का अध्ययन करने के लिए, आपको कुछ सार्वभौमिक उपयोग करने की आवश्यकता है। कुछ ऐसा जो प्रसिद्ध इंजन और स्व-लिखित प्रणाली दोनों के साथ काम करेगा।
मान लें कि आपके पास एक सामग्री प्रबंधन प्रणाली है और आपको यह देखने की आवश्यकता है कि नए उपयोगकर्ताओं को जोड़ने या पासवर्ड बदलने का कार्यान्वयन कैसे लागू किया जाता है।

अधिकांश उपकरण जो डेटाबेस के साथ काम की निगरानी की अनुमति देते हैं, उन्हें भुगतान किया जाता है [ एक , दो ]। मैं कुछ आसान और अधिक सुविधाजनक चाहता था, इसलिए मैंने mysql -xy चुना। यद्यपि उपयोगिता की क्षमताएं मेरी आवश्यकता से अधिक व्यापक हैं, मैं केवल मुख्य बात का वर्णन करूंगा। यह विंडोज के तहत और यूनिक्स सिस्टम के तहत काम करता है।


आप इसे यहाँ डाउनलोड कर सकते हैं: dev.mysql.com/downloads/mysql-proxy
पहली बात आपको वितरण की पसंद पर निर्णय लेने की आवश्यकता है। फिलहाल, नवीनतम संस्करण "MySQL प्रॉक्सी 0.8.3 अल्फा" है, मेरे पास ओएस के रूप में विंडोज 7 है, इसलिए सभी परीक्षण उस पर होंगे।

"डाउनलोड" बटन पर क्लिक करने के बाद, आपको अधिकृत या रजिस्टर करने के लिए कहा जाएगा, लेकिन नीचे अनावश्यक कार्यों के बिना डाउनलोड लिंक है। (उबंटू और डेबियन रिपॉजिटरी में तैयार पैकेज हैं, इसलिए: sudo apt-get install mysqq -xy)
छवि

मैं यह नोट करना चाहता हूं कि 7.9 एमबी के आकार के साथ, वितरण किट में मुख्य मॉड्यूल के समर्थन के साथ लुआ शामिल है।

संग्रह को डाउनलोड करने के बाद, आपको इसे अपने लिए सुविधाजनक डायरेक्टरी में अनपैक करने की आवश्यकता है, C: \ mysql -xy को एक उदाहरण के रूप में लें
एप्लिकेशन को चलाने के लिए, आपको मापदंडों पर निर्णय लेने की आवश्यकता है।

इस संदर्भ में, बहुत कुछ इस बात पर निर्भर करता है कि आपने क्या स्थापित किया है। एक एलएएमपी के रूप में, मैं विंगिनक्स का उपयोग करता हूं, आप इस गुच्छा के बारे में यहां पढ़ सकते हैं: winginx.ru
डिफ़ॉल्ट रूप से, MySQL पोर्ट 3306 पर चलता है, हम इसे स्पर्श नहीं करेंगे।
हमें डेटाबेस से php को जोड़ने के लिए पोर्ट को बदलना होगा। ऐसा करने के लिए, php.ini को ठीक करें
स्ट्रिंग "mysql.default_port" ढूंढें और पोर्ट (डिफ़ॉल्ट रूप से 4040) सेट करें। अधिक सार्वभौमिक कार्य के लिए, "mysqli.default_port" को 4040 में बदलें

छवि

तैयारी का हिस्सा खत्म हो गया है, चलो व्यापार के लिए नीचे उतरें।

विकल्प 1. निगरानी अनुरोध।

सरल निगरानी के लिए, आपको लुआ लिपि का उपयोग करने की आवश्यकता है। जैसा कि मैंने पहले कहा, लुआ बंडल में आता है, इसलिए कुछ भी नया स्थापित करने की आवश्यकता नहीं है।
सामग्री के साथ C: \ mysql-प्रॉक्सी \ डायरेक्टरी में एक साधारण view.lua स्क्रिप्ट बनाएँ:

function read_query(packet) if string.byte(packet) == proxy.COM_QUERY then print(string.sub(packet, 2)) end end 


अब आप रिजल्ट चेक कर सकते हैं।
सुविधा के लिए, सामग्री के साथ C: \ mysql- प्रॉक्सी निर्देशिका में एक view.bat फ़ाइल बनाएँ:

 C:\mysql-proxy\bin\mysql-proxy.exe --proxy-lua-script=C:\mysql-proxy\view.lua --log-file="C:\mysql-proxy\mysql-proxy-log.txt" --proxy-backend-addresses=localhost:3306 


--proxy- बैकएंड-एड्रेस - MySQL सर्वर का पता जिसके लिए हम अनुरोध को प्रॉक्सी करेंगे।

वेब सर्वर लॉन्च करने और डेटाबेस में किसी भी प्रश्न को पूरा करने के बाद, आप इसे देख सकते हैं:
छवि

अनुरोध प्रदर्शित होते हैं, अच्छा है।

विकल्प 2. एक फ़ाइल के लिए अनुरोध और लेखन की निगरानी करना।

किसी फ़ाइल में अनुरोध लिखने के लिए, हम लुआ की मानक विशेषताओं का उपयोग करेंगे।
सामग्री के साथ C: \ mysql-प्रॉक्सी \ निर्देशिका में एक view-write.lua फ़ाइल बनाएँ:

 function read_query(packet) if string.byte(packet) == proxy.COM_QUERY then local file = io.open("C:\\mysql-proxy\\sql-log.txt", "a") file:write(string.sub(packet, 2) .. "\n") file:close() print(string.sub(packet, 2)) end end 

और बैट फ़ाइल "दृश्य-राइट.बैट" है
 C:\mysql-proxy\bin\mysql-proxy.exe --proxy-lua-script="C:\mysql-proxy\view-write.lua" --log-file="C:\mysql-proxy\mysql-proxy-log.txt" --proxy-backend-addresses=localhost:3306 


क्वेरी निष्पादन के बाद परिणाम (पते पर "C: \ mysql -xy \ sql-log.txt")
छवि

स्वयं प्रश्नों को प्रदर्शित करने के अलावा, हमें इन प्रश्नों के परिणामों को प्रदर्शित करने की आवश्यकता हो सकती है।

विकल्प 3. क्वेरी और परिणाम

उसी योजना का उपयोग करते हुए, हम "व्यू-परिणाम.लुआ" स्क्रिप्ट बनाते हैं:
 function read_query( packet ) if packet:byte() == proxy.COM_QUERY then print("Query: " .. string.sub(packet, 2)) local file = io.open("C:\\mysql-proxy\\sql-log.txt", "a") file:write("Query: " .. string.sub(packet, 2) .. "\n") file:close() proxy.queries:append(2, string.char(proxy.COM_QUERY) .. string.sub(packet, 2), {resultset_is_needed = true} ) proxy.queries:append(1, packet, {resultset_is_needed = true}) return proxy.PROXY_SEND_QUERY end end function read_query_result(inj) if inj.id == 1 then for row in inj.resultset.rows do local i = 1 local fields = {} while row[i] do if row[i] == row then break end local file = io.open("C:\\mysql-proxy\\sql-log.txt", "a") file:write("Response field: " .. inj.resultset.fields[i].name .. " => " .. row[i] .. "\n") file:close() print("Response field: " .. inj.resultset.fields[i].name .. " => " .. row[i]) i = i + 1 end end return proxy.PROXY_IGNORE_RESULT end end 


और देखें-परिणाम
 C:\mysql-proxy\bin\mysql-proxy.exe --proxy-lua-script="C:\mysql-proxy\view-result.lua" --log-file="C:\mysql-proxy\mysql-proxy-log.txt" --proxy-backend-addresses=localhost:3306 


नतीजतन, हमें एक पठनीय रूप में अनुरोधों और प्रतिक्रियाओं की पूरी लॉगिंग मिलती है
छवि

Source: https://habr.com/ru/post/In177057/


All Articles