Mac OS X पर चल रहे MySQL सर्वर को रिमोट एक्सेस नहीं कर सकता


11

मेरे पास अपने काम के कंप्यूटर पर एक MySQL सर्वर चल रहा है, जो Mac OS X Maverick चलाता है। मैं इसे होम कंप्यूटर से एक्सेस करना चाहता हूं, जिसमें Mac OS Maverick भी है।

टर्मिनल से, यदि 1 टैब में, मैं अपने काम के कंप्यूटर में ssh करता हूं और बस ssh सत्र को बेकार नहीं होने देता हूं, तो दूसरे टैब पर, मैं MySQL सर्वर का उपयोग कर सकता हूं।

हालाँकि, ssh सत्र चलने के बिना, मुझे निम्नलिखित त्रुटि मिलेगी

त्रुटि 2003 (HY000): 'SERVER_IP_ADDRESS' (60) पर MySQL सर्वर से कनेक्ट नहीं हो सकता

मैंने my.cnfसर्वर पर फ़ाइल को बाइंड-एड्रेस पर टिप्पणी करके या उसे असाइन करने के लिए संशोधित करने का प्रयास किया है, 0.0.0.0लेकिन यह काम नहीं करता है।

ऐसा क्यों है? मैं सर्वर को कैसे कॉन्फ़िगर कर सकता हूं ताकि यह क्लाइंट पर ssh चलाने के बिना रिमोट एक्सेस की अनुमति दे सके? क्या कोई मदद कर सकता है?


मुझे दूरस्थ OS X पर चल रहे PostGIS के साथ भी यही समस्या है ... sshएक टैब में खुले होने पर डेटाबेस से कनेक्ट कर सकते हैं , लेकिन अन्यथा नहीं। मुझे लगता है कि समस्या यह है कि डेटाबेस सर्वर प्रक्रिया को रोक दिया जाता है या नहीं चल रहा है जब मैं दूरस्थ सर्वर में लॉग इन नहीं हूं।
andybega

जवाबों:


20

मैं आज इस त्रुटि के खिलाफ अपना सिर पीट रहा हूँ 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 रहस्यमय तरीके से फिर से कनेक्शन से इनकार कर सकता है। मैंने जो लिखा है, उससे बेहतर सलाह निम्नलिखित है:

  1. संपादित करें या इसके साथ /usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plistबदलें ( या MySQL के दस्तावेज़ को बाइंड-एड्रेस पर देखें )--bind-address=127.0.0.1bind-address=*--bind-address=0.0.0.0
  2. Mysql का उपयोग करके पुनः आरंभ करें brew services restart mysql

तब MySQL को तब से गैर-स्थानीय कनेक्शनों को स्वीकार करना जारी रखना चाहिए - जब तक आप इसे पुनः स्थापित नहीं करते, संभवतः।

संपादित करें (सितंबर 2019) टिमोथी ज़ोर्न बताते हैं कि यह समस्या अब MySQL 8.x के लिए नहीं है और होमब्रे के माध्यम से स्थापित और चलाई जाती है, इसलिए 2016 में लिखा गया मेरा उत्तर, केवल 5.x के लिए प्रासंगिक हो सकता है।


3
एक और टिप: यदि आप $ काढ़ा सेवा चला रहे हैं तो mysql को पुनः आरंभ करें यह हर बार LaunchAgents से प्लिस्ट फ़ाइल को साफ करेगा। अगर आप उस परिवर्तन को जारी रखना चाहते हैं तो संपादित करें /usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist - इसके अलावा एम्मा बहुत बहुत धन्यवाद !!!
LeandroCR

मैंने mysql 5.6 का उपयोग कर स्थापित किया है brew install mysql56, और मैंने ~/Library/LaunchAgents/homebrew.mxcl.mysql56.plistऔर /usr/local/Cellar/mysql56/5.6.32/homebrew.mxcl.mysql56.plistफ़ाइलों को bothe बदल दिया है । लेकिन फिर भी जब मैं mysql के माध्यम से लांच mysql.server start, कि ps आदेश से पता चलता है bind-address=127.0.0.1। क्या संपादित करने के लिए कोई अन्य फाइल है?
xi.lin

@ xi.lin जैसा कि मैं इसे समझता mysql.server startहूं, लॉन्चएजेंट को बायपास करता है, इसलिए शायद इसकी सेटिंग कहीं और से हो जाती है। सेटिंग का उपयोग करने के लिए plist, आपको संभवतः उपयोग करना होगाbrew services restart mysql
एम्मा बर्व्स

@EmmaBurrows brew services restart mysqlआउटपुट Successfully started mysql` (लेबल: homebrew.mxcl.mysql) का उपयोग करके `लेकिन अभी भी पता है 127.0.0.1 । वास्तव में मैं homebrew.mxcl.mysql.plistहोने के बजाय पा नहीं homebrew.mxcl.mysql56.plist
सका

1
चूंकि अब यह काम नहीं कर रहा है। mysqld_safeमेरे लिए जो कमांड चलती थी , वह नहीं है bind_address। इसके बजाय इसमें निर्दिष्ट है /usr/local/etc/my.cnf
टिम्मम्म

6

दौड़ते locate my.cnfहुए फाइल मिली/usr/local/etc/my.cnf

  1. उस फ़ाइल को संपादित करें और सेट करें bind-address = 0.0.0.0
  2. Mysql को पुनरारंभ करें: brew services restart mysql

5

मुझे आशा है कि आपको '%'वाइल्डकार्ड के साथ रिमोट एक्सेस के लिए उपयोगकर्ता बनाने और डीबी पर अनुमति देने की आवश्यकता है।

चरण 1:

My.cnf ( /server/9107/how-do-i-find-where-mysql-is-loading-its-config-from ) में अपने बाइंड पते पर टिप्पणी करें

# bind-address        = xxx.xxx.xxx.xxx

और MySQL Server को रीस्टार्ट करें।

चरण 2:

फिर आपको रिमोट एक्सेस के लिए उपयोगकर्ता को अनुमति देने की आवश्यकता है

GRANT ALL ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypass';

कृपया दूरस्थ कनेक्शन सक्षम करने के बारे में एक नज़र रखें


मैंने पहले इस सेटिंग (बाइंड-एड्रेस पर टिप्पणी) की कोशिश की है और यह काम नहीं किया। मैंने एक उपयोगकर्ता बनाया है और सभी अनुमति भी दी है। mysql> show grants for 'home'; | Grants for home@% | GRANT ALL PRIVILEGES ON *.* TO 'home'@'%' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
chepukha

क्या आपके पास कोई फ़ायरवॉल है? अगर यह कृपया अक्षम है कि।
अब्दुल मनफ

हाँ, मैं सर्वर तक पहुँच सकता हूँ जब फ़ायरवॉल बंद हो। लेकिन क्या मैं इसे पूरी तरह से बंद करने के बजाय sql सर्वर तक रिमोट एक्सेस की अनुमति देने के लिए फ़ायरवॉल को कॉन्फ़िगर कर सकता हूं? सर्वर पर, फ़ायरवॉल सेटिंग्स में, मैंने mysqld को "इनकमिंग कनेक्शन की अनुमति देने के लिए" सेट किया है
chepukha

क्या आपके पास SQL ​​Server भी उसी मशीन पर स्थापित है?
अब्दुल मनफ

हां, है। आप एक ही मशीन पर SQL सर्वर और फ़ायरवॉल मतलब है?
चपुखा

0

Iptables की जाँच iptables -L के रूप में करें

यदि आपका आईपी मौजूद नहीं है, तो उसे जोड़ें

पहुँच की अनुमति देने के लिए Ubuntu ADD IP के मामले में:

iptables -A ALLOWIN -s 192.168.1.XX/32 ! -i lo -j ACCEPT
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.