MySQL में होस्ट 'host_name' अवरुद्ध होने का क्या कारण है?


12

जब मैं mysql सर्वर से कनेक्ट करने के लिए गलत पासवर्ड का उपयोग करता हूं, और परीक्षण की संख्या खत्म हो गई है max_connect_errors, और मुझे लगता है कि Aborted_connectsयह भी गिनती है जैसा कि मैं परीक्षण करता हूं, लेकिन मेजबान अभी भी अवरुद्ध नहीं है।

तो करता है Aborted_connectsसे अधिक max_connect_errorsतो HOST_NAME अवरुद्ध है?

जवाबों:


8

इस बिंदु पर, आपको FLUSH HOSTS चलाने और यह देखना होगा कि क्या यह अनवरोधित है।

MySQL डॉक्यूमेंटेशन इस बारे में FLUSH HOSTS कहता है:

  • मेजबान कैश तालिकाओं को खाली करता है। यदि आपके कुछ मेजबानों के आईपी पते को बदलते हैं या यदि आपको त्रुटि संदेश मिलता है तो होस्ट टेबल को फ्लश करना चाहिए, यदि होस्ट 'होस्ट_नाम' अवरुद्ध है। जब MySQL सर्वर से कनेक्ट होने के दौरान मैक्सिमक_कनेक्टर्स से अधिक त्रुटि त्रुटियों को दिए गए होस्ट के लिए क्रमिक रूप से होती है, तो MySQL मानता है कि कुछ गलत है और होस्ट को आगे कनेक्शन अनुरोधों से ब्लॉक करता है। मेजबान तालिकाओं को फ्लश करने से मेजबान से आगे कनेक्शन के प्रयास सक्षम होते हैं। अनुभाग C.5.2.6 देखें, "होस्ट 'होस्ट_नाम अवरुद्ध है"। इस त्रुटि संदेश से बचने के लिए आप mysqld को --max_connect_errors = 999999999 से शुरू कर सकते हैं।

क्यों एक मेजबान के साथ शुरू करने के लिए अवरुद्ध हो जाना चाहिए ??

MySQL प्रलेखन के अनुसार :

यदि आपको निम्न त्रुटि मिलती है, तो इसका मतलब है कि mysqld को होस्ट 'host_name' से कई कनेक्ट अनुरोध प्राप्त हुए हैं जो बीच में बाधित हो गए हैं: होस्ट 'host_name' कई कनेक्शन त्रुटियों के कारण अवरुद्ध है। 'Mysqladmin फ्लश-होस्ट्स' के साथ अनब्लॉक करें अनुमति दी गई बाधित कनेक्ट अनुरोधों की संख्या को max_connect_errors सिस्टम वैरिएबल के मान से निर्धारित किया जाता है। Max_connect_errors अनुरोध विफल होने के बाद, mysqld मानता है कि कुछ गलत है (उदाहरण के लिए, जिसे कोई व्यक्ति तोड़ने का प्रयास कर रहा है), और होस्ट को तब तक के अन्य कनेक्शनों से रोकता है जब तक कि आप mysqladmin फ्लश-होस्ट कमांड निष्पादित नहीं करते हैं या कोई FLUSH HOSTS स्टेटमेंट जारी नहीं करते हैं। खंड 5.1.3, "सर्वर सिस्टम चर" देखें।

डिफ़ॉल्ट रूप से, mysqld 10 कनेक्शन त्रुटियों के बाद एक मेजबान को अवरुद्ध करता है। आप सर्वर को इस तरह शुरू करके मान को समायोजित कर सकते हैं:

shell> mysqld_safe --max_connect_errors=10000 &

यदि आपको किसी दिए गए होस्ट के लिए यह त्रुटि संदेश मिलता है, तो आपको पहले यह सत्यापित करना चाहिए कि उस होस्ट से टीसीपी / आईपी कनेक्शन में कुछ भी गलत नहीं है। यदि आपको नेटवर्क की समस्या हो रही है, तो यह आपके लिए अधिकतम_कनेक्ट_ वेरिएबल के मान को बढ़ाने के लिए अच्छा नहीं है।


ऐसा नहीं लगता कि ये त्रुटियां सामान्य MySQL त्रुटि लॉग पर जाती हैं। क्या मेजबान-अवरोधक कनेक्शन त्रुटियों का लॉग देखने का एक तरीका है? इसके अलावा मैंने ऊपर "क्रमिक" नोट किया। तो, बस बीच में एक सफल कनेक्शन की आवश्यकता है? या, मुझे सिर्फ एक नया सवाल पूछना चाहिए?
मार्क एल।

1

इस तरह की रुकावट का एक कारण यह है कि होस्ट का कुछ यादृच्छिक व्यक्ति MySQL की कुछ मॉनिटरिंग करने का निर्णय लेता है और रिमोट सर्वर पर MySQL पोर्ट के लिए एक टेलनेट सेट करता है। पर्याप्त संख्या में टेलनेट इनवोकेशन के साथ, होस्ट को फिर से उस MySQL सर्वर तक पहुंचने से रोक दिया गया है। कुछ सर्वरों के विपरीत, MySQL उचित समय के बाद स्वचालित रूप से एक्सेस को अनब्लॉक नहीं करता है: सर्वर व्यवस्थापक को MySQL को सिर पर खटखटाना पड़ता है।

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