दूरस्थ कनेक्शन मैसूर उबंटू


95

किसी कारण से, मैं दूरस्थ रूप से अपने MySQL सर्वर से कनेक्ट नहीं कर पा रहा हूं। मैंने सब कुछ करने की कोशिश की है और मुझे अभी भी त्रुटियाँ हो रही हैं।

root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)

अब, मैंने दौड़ने की कोशिश की है

 GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; 
 GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';` 

और अभी भी कुछ भी नहीं! मैं क्या गलत कर रहा हूँ?

EDIT : my.cnfने बाइंड आईपी पर टिप्पणी की है।


MySQL के किस संस्करण का आप उपयोग कर रहे हैं?
स्टीव

सर्वर संस्करण: 5.5.29-0ubuntu0.12.10.1 (उबंटू)
क्रिश्चियन एडुआर्डो लेहेडे लियोन

यह आदेश क्या देता है? ubuntu ~ $ sudo lsof -i -P | grep: 3306
एपेसा

जवाबों:


345

MySQL को लोकलहोस्ट के अलावा किसी और चीज़ में एक्सपोज़ करने के लिए आपके पास निम्न लाइन होनी चाहिए

Mysql संस्करण 5.6 और नीचे के लिए

में uncommented /etc/mysql/my.cnfऔर अपने कंप्यूटर आईपी पते को सौंपा और लूपबैक नहीं

Mysql संस्करण 5.7 और इसके बाद के संस्करण के लिए

में uncommented /etc/mysql/mysql.conf.d/mysqld.cnfऔर अपने कंप्यूटर आईपी पते को सौंपा और लूपबैक नहीं

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

या bind-address = 0.0.0.0यदि आप आईपी निर्दिष्ट नहीं करना चाहते हैं तो जोड़ें

फिर बंद करो और MySQL को नए my.cnf प्रविष्टि के साथ पुनः आरंभ करें। एक बार रनिंग टर्मिनल पर जाएं और निम्न कमांड दर्ज करें।

lsof -i -P | grep :3306

कि xxx में अपने वास्तविक आईपी के साथ कुछ इस तरह वापस आना चाहिए

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

यदि उपरोक्त कथन सही ढंग से वापस आता है तो आप दूरस्थ उपयोगकर्ताओं को स्वीकार कर पाएंगे। हालाँकि, एक दूरस्थ उपयोगकर्ता को सही प्रिव्यू कॉलेजों के साथ जुड़ने के लिए आपको उस उपयोगकर्ता को लोकलहोस्ट और '%' दोनों में बनाया जाना चाहिए।

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

फिर,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

और अंत में,

FLUSH PRIVILEGES; 
EXIT;

यदि आपके पास उपर्युक्त के रूप में एक ही उपयोगकर्ता नहीं है, तो जब आप स्थानीय रूप से लॉगऑन करते हैं, तो आप आधार लोकलहोस्ट विशेषाधिकार प्राप्त कर सकते हैं और पहुंच के मुद्दे हो सकते हैं। यदि आप एक्सेस माईसर को प्रतिबंधित करना चाहते हैं, तो आपको GRANT स्टेटमेंट सिंटैक्स HERE पर पढ़ना होगा। यदि आप यह सब करते हैं और अभी भी कुछ अतिरिक्त त्रुटि आउटपुट और my.cnf उपयुक्त लाइनें पोस्ट करते हैं।

नोट: यदि lsof वापस नहीं आता है या नहीं मिला है तो आप इसे अपने लिनक्स वितरण के आधार पर यहां स्थापित कर सकते हैं । चीजों को काम करने के लिए आपको lsof की आवश्यकता नहीं है, लेकिन यह तब बेहद आसान है जब चीजें अपेक्षा के अनुरूप काम नहीं कर रही हों।


1
धन्यवाद, भले ही मैंने पहली बार इस कदम का सही ढंग से पालन किया है, मैंने उन्हें फिर से आपके पोस्ट करने और आकर्षण की तरह काम किया है!
क्रिस्टियन एडुआर्डो लेहेडे लियोन

14
किसी और के साथ संघर्ष करने के लिए lsof -i -P | grep :3306, जो काम नहीं करता था लेकिन रिमोट कनेक्शन अभी भी उस पुष्टि के बिना ठीक काम करता है, यदि आप उचित आउटपुट नहीं देखते हैं तो इसकी उपेक्षा करें।
माइक एस

@ माइक स्लुटस्की ने नोट के लिए धन्यवाद, मैंने अपना उत्तर संपादित किया। यदि आप पहले से स्थापित नहीं है तो आप lsof स्थापित कर सकते हैं।
अप्पा

2
कई प्रणालियों पर एफडब्ल्यूआईडब्ल्यू sudo lsof -i -Pबहुत अधिक उपयोगी होगा lsof -i -P(यह मानते हुए कि आप एक अप्रभावित उपयोगकर्ता के रूप में लॉग इन हैं)।
दान पसारो

2
lsof -i -P | grep :3306कुछ भी वापस नहीं करता है!
ग्रीन

39

Apesa की उत्कृष्ट पोस्ट के शीर्ष पर कुछ बिंदु जोड़ें:

1) आईपी एड्रेस mysql सर्वर सुन रहा है की जाँच करने के लिए आप नीचे कमांड का उपयोग कर सकते हैं

netstat -nlt | grep 3306

sample result:

tcp 0  0  xxx.xxx.xxx.xxx:3306  0.0.0.0:*   LISTEN

2) FLUSH PRIVILEGESयदि किसी कारणवश बदलाव तुरंत प्रभावी नहीं होते हैं तो अनुदान सारणी को लोड करने के लिए बाध्य करने के लिए उपयोग करें

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
EXIT;

उपयोगकर्ता == mysql से कनेक्ट करने के लिए उपयोगकर्ता यू का उपयोग करता है। exotrow पास
== पासवर्ड यू का उपयोग करने के लिए mysql से कनेक्ट करने के लिए

3) अगर sudo ufw enablemysql सर्वर मशीन पर नेटफिल्टर फ़ायरवॉल सक्षम है ( ), पोर्ट को खोलने के लिए निम्न कार्य करें: रिमोट कंट्रोल के लिए 3306

sudo ufw allow 3306

का उपयोग कर स्थिति की जाँच करें

sudo ufw status

4) एक बार रिमोट कनेक्शन स्थापित हो जाने के बाद, इसे कमांड का उपयोग करके क्लाइंट या सर्वर मशीन में सत्यापित किया जा सकता है

netstat -an | grep 3306
netstat -an | grep -i established

3
इससे मेरा पूरा दिन बच गया! धन्यवाद के लिए sudo ufw status!!
रिद्धिमान अदीब

netstat -nlt | grep 3306खाली लौटता है
जोओ पिमेंटेल फरेरा

@ जोआओ पिमेंटेल फरेरा सुनिश्चित करें कि mysql पहले चल रहा है, सत्यापित करने के लिए कमांड "/etc/init.d/mysql स्थिति" का उपयोग करें
जोनाथन L

8

MySQL केवल लोकलहोस्ट को सुनता है, अगर हम इसे रिमोट एक्सेस को सक्षम करना चाहते हैं, तो हमें my.cnf फाइल में कुछ बदलाव करने की आवश्यकता है:

sudo nano /etc/mysql/my.cnf

हमें बाइंड-एड्रेस और स्किप-एक्सटर्नल-लॉकिंग लाइन्स पर टिप्पणी करने की आवश्यकता है:

#bind-address = 127.0.0.1
# skip-external-locking

इन परिवर्तनों को करने के बाद, हमें mysql सेवा को फिर से शुरू करना होगा:

sudo service mysql restart

1
टिप्पणी करना न भूलेंskip-external-locking
calebeaires

1
मैंने स्किप-आउट-लॉकिंग पर टिप्पणी नहीं की और यह अभी भी काम करता है।
मार्सिया ओंग

मैं /etc/mysql/mysql.conf.d में बदलना पड़ा
Bartando

मेरा यह स्थान है:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
लेस्टर

1

यदि विंडोज़ पर परीक्षण किया जाता है, तो पोर्ट 3306 को खोलने की भूल न करें।


आह आप एक जीनियस हैं, यह बहुत महत्वपूर्ण है यदि आप लिनक्स के लिए विंडोज सबसिस्टम का उपयोग कर रहे हैं, तो आपको विंडोज फ़ायरवॉल के माध्यम से इनबाउंड ट्रैफ़िक के लिए पोर्ट 3306 खोलने की आवश्यकता है, और MySQL के साथ काम कर रहा है या नहीं यह जाँचने के लिए उपरोक्त चीजों में से कोई भी नहीं। उपतंत्र
ब्रायन लीशमैन

1

आप ubuntu 12 (काफी पुराना वाला) का उपयोग कर रहे हैं

सबसे पहले, Ubuntu / 14/4 और पिछले संस्करणों में /etc/mysql/mysql.conf.d/mysqld.cnf फ़ाइल ( /etc/mysql/my.cnf) खोलें

[Mysqld] लाइन के नीचे, बाइंड-एड्रेस = 127.0.0.1 का पता लगाएँ और इसे बदलकर, बाइंड-एड्रेस = 0.0.0.0 या टिप्पणी करें

उसके बाद, Ubuntu MysQL सर्वर को पुनरारंभ करें systemctl restart mysql.service

अब उबंटू सर्वर MySQL सर्वर तक रिमोट एक्सेस की अनुमति देगा, लेकिन फिर भी आपको किसी भी होस्ट से एक्सेस की अनुमति देने के लिए MySQL उपयोगकर्ताओं को कॉन्फ़िगर करने की आवश्यकता है।

उपयोगकर्ता को 'username'@'%'सभी आवश्यक अनुदानों के साथ होना चाहिए

यह सुनिश्चित करने के लिए कि, MySQL सर्वर सभी इंटरफेस पर सुनता है, निम्नानुसार netstat कमांड चलाता है।

netstat -tulnp | grep mysql

आशा है कि यह काम करता है!

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