सवाल बाइंड-एड्रेस = :: 1 # हालांकि, नेटस्टैट 0.0.0.0:3306 सुनना दिखाता है


मैं आईपीवी 6 और आईपीवी 4 सक्षम के साथ 64-बिट विंडोज 7 पर MySQL 5.6 चला रहा हूं।

My.ini में:

port=3306
bind-address = ::1

मैं आईपीवी 6 का उपयोग करने और लूप-बैक एडाप्टर तक सीमित होने की उम्मीद कर रहा था। मैंनें इस्तेमाल किया ::1 के बजाय 127.0.0.1 क्योंकि आईपीवी 6 के साथ win7 डिफ़ॉल्ट है ::1 के लिये localhost

इस कॉन्फ़िगरेशन के साथ नेटस्टैट निम्न रिपोर्ट करता है:

C:\>netstat -an |findstr 3306
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING
  TCP    [::1]:3306             [::]:0                 LISTENING

ऐसा लगता है कि कनेक्शन आईपीवी 4 इंटरफ़ेस पर अवरुद्ध हो रहे हैं, लेकिन नेटस्टैट रिपोर्ट को देखते हुए 0.0.0.0 बंदरगाह 3306 खुला है मुझे असहज बनाता है।

MySQL प्रलेखन निर्दिष्ट करता है:

यदि पता "नियमित" आईपीवी 4 या आईपीवी 6 पता है (जैसे 127.0.0.1   या :: 1), सर्वर केवल उस आईपीवी 4 के लिए टीसीपी / आईपी कनेक्शन स्वीकार करता है   आईपीवी 6 पता।

टीसीपीवीव ने मुझे नेटस्टैट के समान जानकारी दी। मैं टीडीआईएमन को अपने सिस्टम पर काम नहीं कर सका।

मैं mysql को सुनने से कैसे रोक सकता हूं 0.0.0.0?


6
2018-03-17 19:01


मूल




जवाब:


मैं यहां दो संभावनाएं देखता हूं:

  1. आपके पास वास्तव में MySQL चलने की दो प्रतियां हैं, जिनमें से एक आईपीवी 4 से बंधी है, और दूसरा जो आईपीवी 6 से जुड़ा हुआ है। यह शायद बहुत संभावना नहीं है, लेकिन ऐसा कुछ है जिसे आपको किसी भी तरह से जांचना चाहिए।

  2. आपको MySQL के विंडोज पोर्ट में एक बग मिला है। जब मैंने लिनक्स पर यह कोशिश की, bind-address = ::1 MySQL केवल बाध्य करने के कारण ::1 और किसी भी आईपीवी 4 पते के लिए नहीं। इस मामले में आपको इसे MySQL पर एक बग के रूप में रिपोर्ट करना चाहिए।


4
2018-03-20 00:00



जब मैं net stop mysql मुझे कुछ भी नहीं सुन रहा है :3306। जब मैं net start mysql और जल्दी से netstat -an मैं दोनों सुनो प्रविष्टियां देखता हूं। - ebyrob
@ebyrob जो मैंने उल्लेख की दो संभावनाओं में से एक को कवर किया है। - Michael Hampton
MySQL बग सबमिट किया गया: bugs.mysql.com/bug.php?id=72087 - ebyrob
@ebyrob आपकी बग रिपोर्ट के साथ क्या हुआ? यह कहता है "आपके पास बग # 72087 तक पहुंच नहीं है।" - RandomSeed
@RandomSeed आपको ओरेकल के साथ एक उपयोगकर्ता खाता होना चाहिए और इसे देखने के लिए लॉग इन करना होगा। ऐसा लगता है कि अभी तक ट्रायेज के माध्यम से नहीं चला है। - ebyrob


मेरे पास अंत में mysql 5.6 स्रोत में खोदने का समय है। Mysqld.cc की रेखा 2405 में कुछ जवाब हैं।

 /*
   For interoperability with older clients, IPv6 socket should
   listen on both IPv6 and IPv4 wildcard addresses.
   Turn off IPV6_V6ONLY option.

   NOTE: this will work starting from Windows Vista only.
   On Windows XP dual stack is not available, so it will not
   listen on the corresponding IPv4-address.
 */
if (a->ai_family == AF_INET6)
{
  arg= 0;

  if (mysql_socket_setsockopt(ip_sock, IPPROTO_IPV6, IPV6_V6ONLY,/* Line: 2405 */
                              (char *) &arg, sizeof (arg)))
  {
    sql_print_warning("Failed to reset IPV6_V6ONLY flag (error: %d). "
                      "The server will listen to IPv6 addresses only.",
                      (int) socket_errno);
  }
}

इस सॉकेट विकल्प को सेट करने से अतिरिक्त लाइन होती है 0.0.0.0:3306 में दिखाने के लिए netstat। हालांकि, मैं अभी भी निर्दिष्ट करके कनेक्ट करने में सक्षम नहीं हूँ 127.0.0.1 टेलनेट के लिए।

टिप्पणियां इस ध्वनि की तरह ध्वनि बनाती हैं जब वाइल्डकार्ड लागू होता है, लेकिन ऐसा लगता है कि विकल्प तब भी लागू होता है जब यह विकल्प लागू होता है bind-address अधिकृत है।

यहां संभावित रूप से संबंधित चर्चा: http://serverdown.ttwait.com/que/486038

गूगल कैश: http://webcache.googleusercontent.com/search?q=cache:14aq4-3tRLsJ:serverdown.ttwait.com/que/486038+&cd=4&hl=en&ct=clnk&gl=us

संपादित करें: बग रिपोर्ट (जो अभी भी ट्रायज में है) में, मैंने वाइल्डकार्ड पते पर बाध्य करते समय MySQL केवल स्पष्ट IPV6_V6ONLY प्रस्तावित किया है *। ऐसा लगता है कि my.ini में कॉन्फ़िगरेशन की सबसे लचीलापन है। अगर कुछ व्यवस्थापक बाध्यकारी हैं :: और उसके बाद कनेक्टिंग 127.0.0.1 वे आश्चर्यचकित हो सकते हैं। बाइंडिंग * के बजाय :: इसे ठीक कर देगा।


1
2018-03-24 19:19



ओह, तो वे इरादा यह करने के लिए। इसका मतलब है कि यह एक बग नहीं है, यह एक डिजाइन दोष है ... - Michael Hampton
@MichaelHampton यह मुझे लगता है जैसे वे इस बग को ठीक करने के लिए इस विकल्प का इरादा रखते हैं: bugs.mysql.com/bug.php?id=67119 लेकिन यह नहीं पता था कि Win7 पर क्या होगा यदि उन्होंने वाइल्डकार्ड के अलावा अन्य पते के लिए IPV6_V6ONLY को भी सक्षम किया। - ebyrob


0.0.0.0:3306 इसका मतलब है कि MySQL आईपीवी 4 के लिए सभी एडाप्टर / पतों पर सुन रहा है। मैं निम्नलिखित पंक्तियों को my.cnf में रखूंगा:

bind-address = 127.0.0.1
bind-address = ::1

इसे आईपीवी 4 को स्थानीयहोस्ट तक सीमित करना चाहिए; इससे कोई फर्क नहीं पड़ता कि विंडोज किस संस्करण को डिफ़ॉल्ट करता है, फिर भी आप इससे जुड़ सकेंगे। यदि यह हल नहीं करता है, तो आपके पास संभवतः है bind-address कहीं और फाइल में सेट करें।

साथ ही, सुनिश्चित करें कि जब आप इसे पुनरारंभ करते हैं तो mysql वास्तव में बंद हो जाता है; यह बस इतना हो सकता है कि एक पुराना उदाहरण अभी भी चल रहा है और सुन रहा है 0.0.0.0

संपादित करें

देख MySQL दस्तावेज़ीकरण खंड 4.2.3.3 विकल्प फ़ाइलों का उपयोग करना अन्य फाइलों के लिए bind-address पैरामीटर में निर्दिष्ट किया जा सकता है।


-1
2018-03-19 20:29



फिर, मैं बांधना चाहता हूँ ::1 जब तक कि मैं आईपीवी 6 को अक्षम करने की योजना बना रहा हूं (माइक्रोसॉफ्ट आईपीवी 6 को अक्षम करने की सिफारिश करता है)। मैं कनेक्ट कर सकता हूँ 127.0.0.1 इसे स्पष्ट रूप से निर्दिष्ट करके, लेकिन फिर कोई उपकरण या उपयोगकर्ता चयन कर रहा है localhost काम नहीं करेगा (जब मैंने प्रदर्शन के मुद्दों को बाध्यकारी किया तो मैंने वास्तव में समस्या देखी 127.0.0.1 और कनेक्ट करने के लिए localhost विंडोज 7 पर, यह प्रति कनेक्शन लगभग 30 सेकंड था) - ebyrob
क्षमा करें, मुझे और अधिक स्पष्ट होना चाहिए था; डाल दोनों: bind-address = 127.0.0.1  bind-address = ::1 - klugerama
ऐसा लगता है कि मैंने एकाधिक में डाल दिया है bind-address प्रविष्टियां, केवल नीचे मान का उपयोग किया जाता है। मुझे सुनो 127.0.0.1:3306 या ::1:3306 तथा 0.0.0.0:3306। - ebyrob
हम्म, तुम सही हो। मेरे पास मेरी स्थापनाओं में से एक था और पहले पते की जांच नहीं की थी। क्या आपने अपना चेक किया है hosts फाइल? देख victor-ratajczyk.com/post/2012/02/25/... साथ ही, यह शुरू करने के बाद से आपकी mysql लॉग फ़ाइल को पोस्ट करना सहायक हो सकता है। - klugerama
मैं अपनी मेजबान फाइल बदल सकता था लेकिन मैं कुछ अन्य विंडोज़ प्रक्रिया को तोड़ना नहीं चाहता था जो उम्मीद कर सकते हैं localhost के नए डिफ़ॉल्ट को हल करने के लिए ::1। Win7 पर MySQL 5.6 की प्रत्येक स्थापना को ध्यान में रखते हुए मैंने देखा है कि एक ही व्यवहार प्रदर्शित करता है, मुझे नहीं लगता कि मेरी विशेष लॉग फ़ाइल पोस्ट करना यहां उपयोगी होगा। - ebyrob


समाधान में है conf फ़ाइल। सभी को हटाने के लिए प्रयास करें -I या --interface से विकल्प /etc/default/ntp और अपने में निम्नलिखित डालें /etc/ntp.conf:

interface ignore wildcard
interface listen 127.0.0.1
  • इंटरफेस के बिना वाइल्डकार्ड अनदेखा एनटीपी 0.0.0.0 पर भी सुनेंगे

  • इंटरफ़ेस के बिना सुनें एनटीपी केवल 127.0.0.1 को सुनेंगे (बेशक)

यदि आपके पास पहले से ही वह पंक्ति है:

0.0.0.0:3306

तो बस इसे टिप्पणी करें

# 0.0.0.0:3306

** दूसरी पंक्ति में निम्नलिखित परिवर्तन करने का प्रयास करें my.ini

 bind-address = ::1

सेवा मेरे

 bind-address = 127.0.0.1

संपादित करें:

यदि आप windows7 64-bit का उपयोग कर रहे हैं,

आपको उस फाइल पर जाना होगा:

 C:\WINDOWS\system32\drivers\etc\hosts

लोकलहोस्ट उस फ़ाइल में पहली प्रविष्टि होनी चाहिए। उस होस्ट फ़ाइल में स्थानीयहोस्ट के लिए :: 1 हो सकता है। इसे ठीक करने के लिए, लाइन जोड़ें (या असम्बद्ध):

   127.0.0.1       localhost

और उस पंक्ति पर टिप्पणी करें:

   ::1             localhost 

सेवा मेरे

   # ::1             localhost

और फिर आप स्थानीयहोस्ट के माध्यम से कनेक्ट कर सकते हैं।


-1
2018-03-23 09:54



64-बिट विंडोज 7 पर- मेरे पास यूनिक्स एनटीपी नहीं है, /etc या / उस बात के लिए। 127.0.0.1 कार्यों के लिए बाध्यकारी, अगर मैं उपयोग नहीं करता हूं localhost मेरे कनेक्शन स्ट्रिंग में तथा अगर मुझे यकीन है कि मैं कभी भी स्थानीय रूप से कनेक्ट करने के लिए आईपीवी 6 का उपयोग नहीं करना चाहता हूं। (मुझे मिल गया है localhost किसी भी कारण से मेरी क्लाइंट-साइड कॉन्फ़िगरेशन फाइलें और स्क्रिप्ट्स पर, और अन्य देव इसे टाइप करते हैं यदि वे चेकआउट / बिल्ड और अपने क्लाइंट का उपयोग करते हैं।) पीएस - अभी के लिए, हमारा समाधान "बाइंड-एड्रेस विनिर्देश को हटाएं और सुनें 0.0.0.0:3306 पर आग-दीवार के साथ "। यह काम करता है, लेकिन यह धातु की प्लेट पर ड्राइविंग की तरह थोड़ा सा है। - ebyrob
अब मेरा संपादन जांचें। - echo_Me
नेटवर्क समय अभी भी अप्रासंगिक लगता है। क्या आप सुझाव दे रहे हैं कि मैं किसी डेवलपर की होस्ट फ़ाइलों को अप्रचलित होस्ट फ़ाइल कॉन्फ़िगरेशन के साथ संशोधित करने के लिए एक बिल्ड स्क्रिप्ट लिखूं? - ebyrob