मैं आज इस त्रुटि के खिलाफ अपना सिर पीट रहा हूँ OSX Yosemite पर MySQL 5.7 के साथ हाल ही में Homebrew के साथ अद्यतन किया गया। StackOverflow और अन्य जगहों पर सुझावों के बाद, मैंने my.cnf
उन फ़ाइलों के बाद शिकार किया जिनमें से सभी निर्दिष्ट थे bind-address=0.0.0.0
। मैंने इन निर्देशों का पालन करते हुए MySQL को हटा दिया और पुनः इंस्टॉल कर लिया और फिर उपयोग करके पुनः इंस्टॉल किया brew install mysql
। फिर भी रिमोट कनेक्शन की अनुमति नहीं है।
यह तब तक नहीं चला जब तक मैंने दौड़कर यह नहीं ps -ax | grep mysql
देखा कि लॉन्च कमांड में बाइंड एड्रेस को पास किया जा रहा था (इस प्रकार किसी भी my.cnf
फाइल को ओवरराइड करना ), जिसे मैंने कुछ और खोदा और पता चला कि होमबॉर्वर डिफ़ॉल्ट रूप से MySQL को 127.0.0.1 पर बांधता है ।
मेरी समस्या को हल करने के ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
लिए परिवर्तन --bind-address=127.0.0.1
का संपादन --bind-address=0.0.0.0
(बाद में एक विशिष्ट आईपी पते में बदल दिया जाना चाहिए अगर यह सिर्फ एक विकास मशीन नहीं है)।
मुझे लगता है कि यह जानकारी का एक महत्वपूर्ण हिस्सा है जो कि मेरे द्वारा परामर्श किए गए अधिकांश संसाधनों की कमी थी, इसलिए उम्मीद है कि इसे यहां पोस्ट करने से किसी और को मदद मिलेगी!
संपादित करें: जैसा कि LeandroCR ने टिप्पणियों में इंगित किया है, रनिंग brew services restart mysql
डिफ़ॉल्ट रूप से LaunchAgents में प्लिस्ट फ़ाइल को अधिलेखित कर देगा, जिससे MySQL रहस्यमय तरीके से फिर से कनेक्शन से इनकार कर सकता है। मैंने जो लिखा है, उससे बेहतर सलाह निम्नलिखित है:
- संपादित करें या इसके साथ
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
बदलें ( या MySQL के दस्तावेज़ को बाइंड-एड्रेस पर देखें )--bind-address=127.0.0.1
bind-address=*
--bind-address=0.0.0.0
- Mysql का उपयोग करके पुनः आरंभ करें
brew services restart mysql
तब MySQL को तब से गैर-स्थानीय कनेक्शनों को स्वीकार करना जारी रखना चाहिए - जब तक आप इसे पुनः स्थापित नहीं करते, संभवतः।
संपादित करें (सितंबर 2019)
टिमोथी ज़ोर्न बताते हैं कि यह समस्या अब MySQL 8.x के लिए नहीं है और होमब्रे के माध्यम से स्थापित और चलाई जाती है, इसलिए 2016 में लिखा गया मेरा उत्तर, केवल 5.x के लिए प्रासंगिक हो सकता है।
ssh
एक टैब में खुले होने पर डेटाबेस से कनेक्ट कर सकते हैं , लेकिन अन्यथा नहीं। मुझे लगता है कि समस्या यह है कि डेटाबेस सर्वर प्रक्रिया को रोक दिया जाता है या नहीं चल रहा है जब मैं दूरस्थ सर्वर में लॉग इन नहीं हूं।