MySQL सर्वर से 'प्रारंभिक संचार पैकेट पढ़ना', सिस्टम की त्रुटि: 0


128

मुझे त्रुटि हो रही है:

"प्रारंभिक संचार पैकेट, सिस्टम त्रुटि: 0 पढ़ने पर MySQL सर्वर से कनेक्शन खो गया"

जबकि मैं अपने db को जोड़ने जा रहा हूँ।

अगर मैं लोकलहोस्ट का उपयोग कर रहा हूं तो सब कुछ ठीक चल रहा है। लेकिन जब मैं नीचे की तरह अपने लाइव आईपी पते का उपयोग कर रहा हूं, तो यह त्रुटि हो रही है:

mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());

जवाबों:


104

यहाँ कोई सुझाव देता है कि यह एक फ़ायरवॉल समस्या हो सकती है:

मुझे अभी यह समस्या हुई है और पाया कि यह मेरा फ़ायरवॉल था। मैं PCTools फ़ायरवॉल प्लस का उपयोग करता हूं और यह MySQL तक पूर्ण पहुंच की अनुमति नहीं दे रहा था। एक बार मैंने बदल दिया कि यह ठीक था। उम्मीद है की वो मदद करदे।

क्या ऐसा हो सकता है?

साथ ही, यहां कोई व्यक्ति यह बताता है कि ऐसा इसलिए हो सकता है क्योंकि MySQL सर्वर लूप-बैक आईपी (127.0.0.1 / लोकलहोस्ट) के लिए बाध्य है, जो आपको "बाहर" से कनेक्ट करने से प्रभावी रूप से काट देता है।

यदि ऐसा है, तो आपको स्क्रिप्ट को वेबसर्वर (जो शायद MySQL सर्वर भी चला रहा है) को अपलोड करने की आवश्यकता है और अपने सर्वर को 'लोकलहोस्ट' के रूप में होस्ट करें


7
तुम्हारा मतलब क्या है लोकलहोस्ट? मैं भी उसी समस्या का सामना कर रहा हूं और केवल लोकलहोस्ट का उपयोग कर रहा हूं। आवेदन डेटाबेस के रूप में एक ही मशीन पर है। लोकलहोस्ट का क्या मतलब था?
वनोफाइंड

6
@oneofakind वह '127.0.0.1' के बजाय 'लोकलहोस्ट' से जुड़ने का मतलब है
एलेक्स होलसग्रोव

2
मैं mamp के साथ OSX पर एक ही समस्या थी Pro। मैंने इसे mamp pro mysql टैब पर "नेटवर्क एक्सेस टू माईसक्कल" चेकबॉक्स को डिसेबल / री-इनेबल करके फिक्स किया।
उस्मान

43

My.cnf नाम की mysql कॉन्फ़िगरेशन फ़ाइल खोलें और "बाइंड-एड्रेस" खोजने की कोशिश करें, यहां सेटिंग (127.0.0.1 या लोकलहोस्ट) को अपने लाइव सर्वर आईपी (जिस आईपी का आप mysql_connect फ़ंक्शन में उपयोग कर रहे हैं) से बदलें

इससे समस्या का समाधान जरूर होगा।

धन्यवाद


2
सुनिश्चित करें कि आप ssh सुरंग का उपयोग करते समय बाइंड-एड्रेस = 127.0.0.1 या लोकलहोस्ट का उपयोग करें। यह समस्या बिटमनी के साथ थी, जहां बाइंड-एड्रेस मशीन आईपी था।
z2z

1
डेबियन 10 + MySQL स्वसंपूर्ण समर्पित सर्वर के लिए एक ही समस्या और समाधान।
विल्क

यह उल्लेख किया जाना चाहिए कि यह आम तौर पर mysql सेवा को बाध्य करने के लिए बेहतर हो सकता है 127.0.0.1जहां अन्य मेजबानों से प्रत्यक्ष पहुंच संभव नहीं है। यह रिमोट ब्रूट बल हमलों को रोकता है और नेटवर्क के लिए संभावित सुरक्षा मुद्दों को उजागर नहीं करता है। यदि आपका एप्लिकेशन उसी मशीन पर स्थित है (जो बहुत सामान्य होस्टिंग सेटअप है), तो 127.0.0.1सम्मान का उपयोग करें । localhostmysql host के रूप में और यह आपके बाहरी इंटरफ़ेस के लिए सेवा को बाँधने और mysql होस्ट के रूप में उपयोग करने के समान काम करेगा। यदि आपका एप्लिकेशन कहीं और स्थित है तो यदि संभव हो तो एक आंतरिक नेटवर्क का उपयोग करें।
डेविड

36

1) MySQL से रिमोट कनेक्ट की अनुमति दें। फ़ाइल संपादित करें:

>sudo nano /etc/mysql/my.cnf

टिप्पणी लाइन:

#bind-address       = 127.0.0.1

MySQL को पुनरारंभ करें:

>sudo service mysql restart

2) रिमोट कनेक्शन के लिए उपयोगकर्ता बनाएं।

>mysql -uroot -p

CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';

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

3) मेरे मामले में मुझे उबंटू के साथ विंडोज से वर्चुअलबॉक्स मशीन से दूरस्थ रूप से कनेक्ट करने की आवश्यकता है। इसलिए मुझे iptables में पोर्ट 3306 की अनुमति देने की आवश्यकता है:

>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

1
मेरे लिए मैं my.cnf पर बाइंड-एड्रेस को सत्यापित करना भूल गया। धन्यवाद।
abkrim

1
इससे पूरी तरह से मदद मिली। धन्यवाद!
osehgol

1
पूरी तरह से काम किया, लेकिन मैं विंडोज़ पर कार्यक्षेत्र का उपयोग कर रहा था इसलिए चरण 3 नहीं किया। लेकिन यह काम किया। धन्यवाद!
रोहितअनेजा

हालाँकि अंतिम कमांड ने मेरे लिए काम नहीं किया, लेकिन आपके रास्ते में नए उपयोगकर्ता बनाने से मेरी समस्या हल हो गई। मैं अपने लैपटॉप से ​​रास्पबेरी पाई पर mysql का उपयोग कर सकता हूं। धन्यवाद!
आईयूपी अलकेश

FLUSH PRIVILEGESनया उपयोगकर्ता बनाने के बाद याद रखें ।
यू होंग टाट

15

नया दास सर्वर सेट करते समय यह समस्या थी। पाया गया कि यह दास सर्वर आईपी एड्रेस मास्टर सर्वर से गायब था/etc/hosts.allow फ़ाइल । आईपी ​​पते को जोड़ा और यह मुझे मास्टर सर्वर से कनेक्ट करने देता है।

ध्यान दें कि मैं उपयोग करता हूं hosts.allowऔर hosts.denyपहुंच को नियंत्रित करता हूं ।


कनेक्टर के साथ मेरी समस्या / c ++। अब, अगर मैं केवल क्या सेटिंग जरूरतों में होने की मिल सकता है allowजब denyहै ALL: ALL...

इससे वास्तव में मेरी जान बच गई, मैं कार्यक्षेत्र से mysql से जुड़ने के मुद्दों को ले रहा था, मुझे "ALL: 127.0.0.1" को /etc/hosts.allow फ़ाइल में जोड़ने की आवश्यकता थी और यह काम करना शुरू कर दिया
Tomáš Tibenský

मेरे मामले में, मेजबान आईपी के लिए / etc / मेजबानों में एक खराब (पुरानी) प्रविष्टि थी। जब एक नया आईपी जारी किया गया था, तो यह पुराने के तहत आया था और इसकी अनदेखी की गई थी। पुराने IP को हटाने से त्रुटि ठीक हो गई।
डेविड रामिरेज़

7

मैं इस समस्या थी और यह समाप्त हो गया पूर्व sys व्यवस्थापक पोर्ट MySQL चल रहा था बदल दिया है। MySQL कार्यक्षेत्र डिफ़ॉल्ट 3306 से कनेक्ट करने का प्रयास कर रहा था, लेकिन सर्वर 20300 पर चल रहा था।


1
इस उत्तर के लिए अच्छी बात है। पता चला, मैंने खुद से ऐसा किया।
सतर्कता

5

मेरे मामले में समस्या यह थी कि MySQL केवल linux पर lo को बाँध रहा था। समस्या को हल करने के लिए मैंने my.cnf (/etc/mysql/my.cnf पर) को संपादित किया है जो लाइन बाइंड-एड्रेस = 127.0.0.1 को हटा रहा है

यह mysql को किसी भी नेटवर्क इंटरफ़ेस से बाँधने की अनुमति देता है


5

MySQL कार्यक्षेत्र 6.3 का उपयोग करके Google क्लाउड SQL से कनेक्ट करने का प्रयास करते समय यह त्रुटि मुझे हुई।

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

मैंने इसे अधिकृत किया और काम पर वापस चला गया।


4

MySQL कार्यक्षेत्र से कनेक्ट करते समय मैं इस सटीक त्रुटि में भाग गया। यहां मैंने इसे कैसे तय किया। मेरी /etc/my.cnf कॉन्फ़िगरेशन फ़ाइल में सर्वर के IP पते पर बाइंड-एड्रेस मान सेट था। यह सेटअप प्रतिकृति के लिए किया जाना था। वैसे भी, मैंने इसे दो चीजों से हल किया है:

  1. एक उपयोगकर्ता बनाएं जिसका उपयोग my.cnf फ़ाइल में बाइंड पते से कनेक्ट करने के लिए किया जा सकता है

जैसे

CREATE USER 'username'@'bind-address' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schemaname.* TO 'username'@'bind-address';
FLUSH PRIVILEGES;
  1. बाइंड-पता से मेल करने के लिए MySQL कार्यक्षेत्र में कनेक्शन विवरण में MySQL होस्टनाम मान बदलें

बहुत बहुत धन्यवाद, हमारे पास MySQL प्रतिकृति भी थी और बाइंड-एड्रेस एक स्थानीय था: 10.0.0.x. मैं इस समाधान के लिए दिनों से संघर्ष कर रहा था।
iFadi

3

मेरे लिए समस्या यह थी कि DNS प्रश्नों को सबनेट के भीतर एफडब्ल्यू द्वारा अवरुद्ध किया गया था। समाधान MySQL के भीतर DNS लुकअप को अक्षम करना था।


मुझे संदेह है कि डीएनएस को मेरे मामले में दोषी ठहराया जाना है, साथ ही साथ।
ज़ेनेक्सर

3

मैं बस एक विंडोज़ बॉक्स पर mysql सेट करता हूं। जब एक ही बॉक्स पर Navicat MySql क्लाइंट के साथ जुड़ने की कोशिश कर रहा हूं तो मुझे ओपी की त्रुटि मिली। मुझे होस्ट के रूप में 127.0.0.1 निर्दिष्ट करना था, और यह मिल गया।

लोकलहोस्ट, या सर्वर वास्तविक आईपी एड्रेस दोनों काम नहीं करते थे।


3

त्रुटि का मतलब है कि इसे उस पोर्ट से प्रतिक्रिया नहीं मिली, जिस पर सर्वर को खोजने की उम्मीद थी। कारण गलत पोर्ट से संपर्क करने से लेकर (कई कारणों में से एक) सर्वर से अपेक्षित पोर्ट पर नहीं है।

जांचें कि आपका सर्वर /etc/mysql/my.cnf में किस पोर्ट से बंधा है। जो आपके कनेक्ट स्टेटमेंट में है उसके अनुरूप है। यदि वे मेल खाते हैं तो सर्वर से mysql के साथ और मशीन की कमांड लाइन से कनेक्ट करने का प्रयास करें जहां आप क्लाइंट चला रहे हैं। यदि यह एक जगह काम करता है और दूसरा नहीं तो आपके पास फ़ायरवॉल / राउटर कॉन्फ़िगरेशन समस्या हो सकती है।


मुझे नहीं लगता कि यह सही है, अगर उस बंदरगाह पर कुछ भी नहीं सुना जा रहा है तो आपको प्रतिक्रिया मिलेगी ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61), Lost connection to MySQL serverसंदेश नहीं ।
केन विलियम्स

2

मेरे मामले में, मेरे पास सभी थे: सभी होस्टेसडेन में। इसे बदलकर ALL: PARANOID ने ssh से कनेक्ट होने पर मेरी समस्या हल कर दी


2

समस्या मेरे लिए काफी बेवकूफी भरी थी।

मुझे एडब्ल्यूएस ईसी 2 उबंटू मशीन पर एक ही मुद्दा मिलता था (मारियाबेड स्थानीय समय के लिए स्थानीय रूप से स्थापित है), इसलिए मैंने एसएसएच सुरंग बनाने की कोशिश की, और एक ही मुद्दा था। इसलिए मैंने टर्मिनल पर सुरंग को बचाने की कोशिश की:

ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem

और इसने मुझे यह बताया:

कृपया उपयोगकर्ता "रूट" के बजाय उपयोगकर्ता "ubuntu" के रूप में लॉगिन करें।

मैंने अपने ssh config की तरह ssh उपयोगकर्ता को रूट से ubuntu में बदल दिया, और यह ठीक से जुड़ा।

इसलिए अपने SSH कनेक्ट करने वाले उपयोगकर्ता की जांच करें।

मैं इसका निरीक्षण करता हूं, इसलिए यह मेरे समय का आधा घंटा है, इसलिए मुझे आशा है कि यह आपके लिए उपयोगी होगा।


2

मेरे लिए कॉन्फिग फ़ाइल मिली थी "/etc/mysql/mysql.conf.d/mysqld.cnf" जिस पर टिप्पणी करते हुए बाइंड एड्रेस पता चला।

जैसा कि हम यहां देख सकते हैं: स्किप-नेटवर्किंग के बजाय डिफ़ॉल्ट अब केवल स्थानीयहोस्ट पर सुनना है जो अधिक संगत है और कम सुरक्षित नहीं है।


मेरे सबसे बड़े आश्चर्य के लिए, यह एक डेबियन 10 के तहत काम करता है। मैंने इसके लिए एक मौका दिया और काम किया! Mysql config संपादित करें sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfऔर इसके बजाय bind-address = 111.112.113.114मैंने उपयोग किया bind-address = 127.0.0.1। SSH टनल सेटिंग को hostpresto.com/community/tutorials/… अच्छी नौकरी के रूप में वर्णित किया गया है ! धन्यवाद!
18

1

इसी मुद्दे पर भागे , कोई फायदा नहीं हुआ। मेरे लिए समाधान विशेषाधिकार बहा रहा था ।

mysql> FLUSH PRIVILEGES;

1

मेरे लिए काम bind-address = 0.0.0.0में सेटिंग mysql/my.cnf। यह मूल रूप से सभी पते (लेकिन अभी भी एक बंदरगाह) को सुनता है।

और अपने सर्वर को पुनरारंभ करना न भूलें: systemctl restart mysql


6
सभी पते / इंटरफेस, लेकिन केवल एक पोर्ट।
ज़ेनेक्सर

1

मुझे बस एक ही समस्या थी, लेकिन मेरे मामले में मैंने इसे हल किया

सेवा mysqld शुरू


1

एक और कारण ...

मैं एक Ubuntu सर्वर में भाग गया, जहाँ सब कुछ अनुकूलित किया गया था और उसी त्रुटि के कारण कनेक्ट नहीं हो सका।

यह सेटिंग अंदर थी /etc/ssh/sshd_config

PermitTunnel no

में बदलने के बाद

PermitTunnel yes

मैं अपने MySQL DB को दूरस्थ रूप से कनेक्ट करने में सक्षम था


1

मैं उबंटू 18.04 पर अपने db docker कंटेनर को जोड़ने की कोशिश कर रहा हूं , यही समस्या है।

nmcli devडिवाइस docker0कनेक्ट है या नहीं यह जांचने के लिए सबसे पहले अपने डिवाइस को चेक करें ।

यदि यह कनेक्ट नहीं है, तो docker सेवा को पुनरारंभ करने का प्रयास करें:

sudo service docker restart


1

मेरे मामले में यह यूनिवर्सिटी वाईफाई ब्लॉकिंग पोर्ट 3306 था। मैं मोबाइल हॉटस्पॉट का उपयोग करके कनेक्ट करने में सक्षम था।

मोबाइल हॉटस्पॉट या किसी अन्य नेटवर्क में बदलें, और अगर यह वहां काम करता है, तो आप जानते हैं कि मूल नेटवर्क पोर्ट 3306 को अवरुद्ध कर रहा है। यदि आपको 1 से अधिक नेटवर्क पर समान त्रुटि मिलती है, तो आप जानते हैं कि यह आपके मशीन के लिए विशिष्ट है।


1

FirewalldIP एड्रेस को ब्लॉक करता है। इसलिए एक्सेस देने के लिए, इन कमांड का उपयोग करें:

फ़ायरवॉल- cmd --permanent --zone = भरोसेमंद - source- your_IP / 32

फ़ायरवॉल- cmd - अपवर्तक --zone = भरोसेमंद - बंदरगाह = 3306 / tcp

फ़ायरवॉल- cmd --reload


0

दूरस्थ रूप से मैसिकल से कनेक्ट करते समय, मुझे त्रुटि मिली। मुझे यह चेतावनी मिली थी /var/log/mysqld.log:

[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution

मैंने अभी इस लाइन को /etc/hostsफाइल में जोड़ा है :

X.X.X.X some_name

समस्या सुलझ गयी! skip-name-resolveMySQL से कनेक्ट होने पर मेरे स्थानीय ऐप में कुछ त्रुटियों का उपयोग नहीं करना ।


0

मुझे भी ऐसी ही समस्या थी। इसे ठीक करने के लिए मैंने होस्ट को लोकलहोस्ट से बदला: 3306 से सिर्फ लोकलहोस्ट को। जब आप कनेक्शन के लिए unproper पोर्ट को अलग करते हैं तो त्रुटि आ सकती है। इसे डिफ़ॉल्ट रूप से छोड़ना बेहतर है।


1
यह संभावना है क्योंकि mysql होस्टनाम के हिस्से के रूप में पोर्ट को स्वीकार नहीं करता है, इसके बजाय आपको तर्क का उपयोग करने की आवश्यकता है-P 3306
क्ले एच

0

डेटाबेस निर्देशिका पढ़ने-लिखने की अनुमति भी एक समस्या मुझे मिली। बस सुनिश्चित करें कि आपका एप्लिकेशन db स्थान पर फ़ाइलों को rw करने में सक्षम है। परीक्षण के लिए 777 की कोशिश करें।


0

मैंने उसी समस्या का सामना किया। मैंने जांच की और AllowTcpForwarding हां को सेट करने का प्रयास किया लेकिन यह मेरे sshd_config में गायब था इसलिए कोई मदद नहीं की। मैंने sshd_config या my.cnf को नहीं बदला। सुनिश्चित करें कि ssh होस्टनाम mysql hostname (लोकलहोस्ट का उपयोग करें) के साथ समान नहीं है।

कार्यक्षेत्र में, नया कनेक्शन जोड़ने के लिए + चुनें और निम्नलिखित सेट करें:

  • कनेक्शन विधि: SSH पर मानक टीसीपी / आईपी
  • SSH होस्टनाम: 192.168.0.50:22 (दूरस्थ SSH सर्वर IP और पोर्ट (वैकल्पिक) को बदलें)
  • SSH उपयोगकर्ता नाम: sshuser
  • आप पासवर्ड सेट कर सकते हैं या प्रॉम्प्ट पर जोड़ सकते हैं
  • MYSQL होस्टनाम: लोकलहोस्ट या 127.0.0.1
  • MYSQL सर्वर पोर्ट: 3306
  • आप पासवर्ड सेट कर सकते हैं या प्रॉम्प्ट पर जोड़ सकते हैं

परीक्षण कनेक्शन। यह सफल होना चाहिए तब ओके हिट करें। वीओला!


0

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


0

मैंने 3 चरणों से नीचे किया है तो मेरे लिए काम कर रहा है।

  1. bind-address = "YOUR MACHINE IP"में my.cnfपर फ़ाइल /etc/my.cnf

  2. सेवा को पुनरारंभ करें: service httpd restart

  3. GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;


0

मुझे इसी तरह की त्रुटि थी (MYSQL से कार्यस्थल पर MYSQL से कनेक्ट करना)। मैं पहले ठीक कनेक्ट करता था और अचानक यह काम करना बंद कर देता था और बस फिर से काम नहीं करता था)। मेरा कनेक्शन keyfile द्वारा संरक्षित SSH के माध्यम से था।

पता चला कि मैं बाहर टाइमिंग कर रहा था। इसलिए मैंने SQL कनेक्शन टाइमआउट को 30 सेकंड (डिफ़ॉल्ट 10 से) तक बढ़ाया और फिर से जाना अच्छा था। कोशिश करने के लिए चीजें (यदि आप एक समान सेटअप में हैं)

  1. क्या आप सीधे टर्मिनल से सर्वर पर जा सकते हैं (कुंजी फ़ाइल अनुमतियों आदि के साथ समस्याओं का पता लगाता है)?
  2. क्या आप तब टर्मिनल के माध्यम से MySQL से कनेक्ट कर सकते हैं जैसे एक ही उपयोगकर्ता / pwd जैसे कुछ का उपयोग करके mysql -u [username] -p [database] ? यह उपयोगकर्ता अधिकारों के मुद्दों आदि के लिए जाँच करेगा।
  3. यदि वे दोनों काम करते हैं तो आपके पैरामीटर समस्या नहीं हैं और शायद मेरे जैसे ही टाइमआउट मुद्दा है (सिवाय इसके कि कभी भी टाइमआउट त्रुटि नहीं हुई, बल्कि अनुमति आदि के लिए जांच करने के लिए कहा गया)

0

सीमित डिस्क स्थान इस त्रुटि का कारण बन सकता है।

अपने डिस्क स्थान की जाँच करें

$ df -h

यदि 100% उपयोग किए गए डिस्क हैं, तो अंतरिक्ष को बढ़ाने की कोशिश करें।

मेरे मामले में: मेरे पास वैग्रंट (8.0.1) बॉक्स (उबंटू 16.04) मेरी mysql डिस्क की क्षमता 10GB थी, मैंने इसे 20GB तक बढ़ा दिया

$ sudo lvextend -L20G -r /dev/mapper/homestead--vg-mysql--master

फिर mysql को पुनरारंभ करें

$ sudo service mysql restart

0

यदि आप रिमोट से कनेक्ट होने वाले इस एरोर का सामना करते हैं, तो cpanel में रिमोट mysql विकल्प पर जाएं और फिर होस्ट में% जोड़ें (% वाइल्डकार्ड की अनुमति है)।

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