मैं MySQL से ग्राहकों को कैसे डिस्कनेक्ट कर सकता हूं?


9

मुझे MySQL से दिए गए उपयोगकर्ता नाम के साथ सभी क्लाइंट को डिस्कनेक्ट करने के लिए एक कुशल तरीका चाहिए। मैंने उपयोगकर्ताओं के पासवर्ड को बदलने के बारे में सोचा था, लेकिन मुझे लगता है कि कनेक्शन की जांच होने पर ही इसकी जाँच की जाती है।

विचार?

जवाबों:


7

आप नीचे "SQL से SQL" विधि का उपयोग कर सकते हैं (बस जरूरत के अनुसार mysql क्लाइंट को अतिरिक्त कनेक्शन विकल्पों में पास करें):

shell> mysql -NBe "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE user = 'some_username';" | mysql -vv

नोट: यह MySQL 5.1 और 5.5 के साथ काम करता है। पुराने MySQL संस्करणों के लिए इसे अलग तरीके से लागू किया जाना चाहिए क्योंकि सूचना_समेय में प्रक्रिया सूची तालिका नहीं है।

उपयोग किए गए विकल्प:

-N means that you do not want to get column names back.
-B puts it into batch mode, so that you do not get MySQL's table layout.
-e executes the following statement.
-v controls the verbosity, could be used up to three times.

यह कैसे काम करता है इसका स्पष्टीकरण:

आईडी के साथ सबसे पहले KILL स्टेटमेंट जेनरेट किए जाते हैं।

shell> mysql -NBe "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE user = 'some_username';"

नमूना उत्पादन:

KILL 1061;
KILL 1059;
KILL 1057;

फिर उन बयानों को अंजाम दिया जाता है।

shell> mysql -NBe "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE user = 'some_username';" | mysql -vv

नमूना उत्पादन:

--------------
KILL 1061
--------------

Query OK, 0 rows affected

--------------
KILL 1059
--------------

Query OK, 0 rows affected

--------------
KILL 1057
--------------

Query OK, 0 rows affected

यह MySQL 5.5 के लिए बहुत अधिक प्रत्यक्ष है। +1 !!!
रोलैंडमाइसीडीडीबीए

1

लाइनक्स पर आप ऐसा कुछ उपयोग कर सकते हैं।

मेरा दृष्टिकोण बहुत सरल है। पहले चरण में हम अपने डेटाबेस में 'शो प्रोसेसलिस्ट' भेजते हैं। परिणाम सभी जुड़े उपयोगकर्ताओं के साथ एक सूची है। अगले चरण में हम उपयोगकर्ता नाम को फ़िल्टर करने के लिए अच्छे पुराने grep कमांड का उपयोग करते हैं। Awk के साथ हम 'किल कमांड' उत्पन्न करते हैं। अंतिम चरण में हम सभी किल कमांड mysql को भेजते हैं। सब कुछ समेटना होगा | प्रतीक।

mysql -uroot -e 'show processlist' | grep username | awk {'print "kill "$1";"'}| mysql -uroot

इस कोड के लिए कुछ संक्षिप्त विवरण जोड़ना अच्छा होगा।
RLF
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.