MySQL सर्वर को एक से अधिक IP पते से कैसे बांधें?


260

क्या MySQL को एक से अधिक IP पते पर बाँधने का कोई गुप्त तरीका है?

जहाँ तक मैं my.cnf में बाइंड-एड्रेस पैरामीटर देख सकता हूँ एक से अधिक IP का समर्थन नहीं करता है और आप इसे एक से अधिक बार नहीं कर सकते।

जवाबों:


242

नहीं, वहाँ नहीं है (मैंने अभी 1 घंटे पहले जाँच की थी)। आप my.cnf में बाइंड-एड्रेस पर टिप्पणी कर सकते हैं:

#skip-networking
#bind-address                   = 127.0.0.1

यदि आप केवल 2 आईपी चाहते हैं, तो आपको एक फ़ायरवॉल का उपयोग करना होगा।


31
सही बात। बाइंडिंग सर्वर पर 0, 1, या सभी IP पते तक सीमित है ।
जो

7
ध्यान दें, हालांकि, आप दोनों socketऔर bind-addressविकल्पों को निर्दिष्ट करके एक स्थानीय यूनिक्स सॉकेट और एक नेटवर्क सॉकेट प्रकाशित और सेवा कर सकते हैं।
डैनॉर्टन

5
आज भी सच है।
डेनिस नोल्टे

22
ये बेहूदा है।
फिलिप


78

127.0.0.x पर बांधने से यह सभी उपकरणों के लिए उपलब्ध नहीं होगा, यह इसे स्थानीय स्तर पर ही उपलब्ध कराएगा। यदि आप इसे सभी इंटरफेस को उपलब्ध कराना चाहते हैं, तो आपको 0.0.0.0 का उपयोग करना चाहिए। यदि आप इसे एक से अधिक से एक्सेस करना चाहते हैं, लेकिन सभी इंटरफेस से कम है, तो आपको 0.0.0.0 से बाइंड करना चाहिए और उन इंटरफेस को बंद करना चाहिए जिनके माध्यम से आप एक्सेस नहीं करना चाहते हैं।

इसके अलावा, सुरक्षा की एक दूसरी परत के रूप में, आपको यह सुनिश्चित करना चाहिए कि आपके सभी MySQL उपयोगकर्ताओं के पास होस्ट फ़ील्ड% (अर्थात अन्य होस्ट) के अलावा किसी और चीज़ के लिए सेट है।


1
जब तक आपके पास एक टूटा हुआ नेटवर्क स्टैक नहीं है आप 0.0.0.0 को संबोधित करने के लिए एक टीसीपी पोर्ट को बांध नहीं सकते हैं।
जॉन गार्डनियर्स

26
आप 0.0.0.0 से बांध सकते हैं। आप बस इसे रूट नहीं कर सकते। यदि आप लिनक्स पर हैं (या विंडोज पर भी, बस विंडोज़ के लिए नेटकैट स्थापित करें) कोशिश करें: एक टर्मिनल में: nc -l 0.0.0.0 4321 और दूसरे टर्मिनल में: टेलनेट <आपके कंप्यूटर के किसी भी इंटरफ़ेस का IP> 4321 है और यह इससे जुड़ जाएगा।
ग्रे पैंथर

जैसा कि मैंने कहा, जब तक आपके पास एक टूटा हुआ नेटवर्क स्टैक नहीं है ...
जॉन गार्डनियर्स

1
@ जॉनगार्डियर्स यह है कि क्यों यह लिनक्स के आईपी (7) मैन पेज में विशेष पतों के तहत परिभाषित किया गया है INADDR_ANY (0.0.0.0) means any address for binding;:?
एरोबिक

2
डेबियन पर, /etc/mysql/conf.d/bindaddress.cnfसामग्री के साथ एक फ़ाइल फ़ाइल बनाएं[mysqld] \n bind-address = 0.0.0.0
यवेस मार्टिन

41

आप एक से अधिक आईपी पते से नहीं जुड़ सकते हैं, लेकिन आप इसके बजाय सभी उपलब्ध आईपी पते से जुड़ सकते हैं। यदि ऐसा है, तो बस 0.0.0.0अपने MySQL कॉन्फ़िगरेशन फ़ाइल (जैसे /etc/mysql/my.cnf) में एक बाध्यकारी पते के लिए उपयोग करें :

bind-address    = 0.0.0.0

यदि पता 0.0.0.0 है, तो सर्वर सभी सर्वर होस्ट IPv4 इंटरफेस पर टीसीपी / आईपी कनेक्शन स्वीकार करता है।

इसके अलावा अगर पता है ::, तो सर्वर सभी सर्वर होस्ट आईपीवी 4 और आईपीवी 6 इंटरफेस पर टीसीपी / आईपी कनेक्शन स्वीकार करता है। सभी सर्वर इंटरफेस पर IPv4 और IPv6 कनेक्शन दोनों को अनुमति देने के लिए इस पते का उपयोग करें।

या आप bind-address=पूरी तरह से टिप्पणी कर सकते हैं, इसलिए यह सभी पतों पर बाँध देगा। लेकिन सुनिश्चित करें कि आपने skip-networkingअपने my.cnf में सक्षम नहीं किया है यदि आप दूरस्थ कनेक्शन को भी अनुमति देना चाहते हैं (और पढ़ें: MySQL: दूरस्थ और स्थानीय कनेक्शन दोनों की अनुमति दें )।

बाइंडिंग पता बदलने के बाद, अपने MySQL सर्वर को फिर से शुरू करना न भूलें:

sudo service mysql restart

अंततः आप मास्टर / स्लेव प्रतिकृति के साथ एक मशीन (विभिन्न बंदरगाहों) पर MySQL के कई उदाहरणों को चलाने के लिए विचार कर सकते हैं। प्रतिकृति एक MySQL डेटाबेस सर्वर (मास्टर) से डेटा को एक या एक से अधिक MySQL डेटाबेस सर्वर (दासों) में कॉपी किया जा सकता है।

अधिक पढ़ें:


यह ठीक काम करता है। बस यह देखना याद रखें कि क्या सभी उपयोगकर्ताओं को उस 2, 3 से कनेक्ट करने की अनुमति है, जो भी आईपी पता है
gies0r

21

नहीं आप नहीं कर सकते। वह पृष्ठ जिसे आप स्पष्ट रूप से बताते हैं:

करने के लिए बाध्य करने के लिए आईपी पते। केवल एक पते का चयन किया जा सकता है। यदि यह विकल्प कई बार निर्दिष्ट किया जाता है, तो दिए गए अंतिम पते का उपयोग किया जाता है।

यदि कोई पता या 0.0.0.0 निर्दिष्ट नहीं है, तो सर्वर सभी इंटरफेस पर सुनता है।


12

जैसा कि दूसरों ने उत्तर दिया है, एक तरह से एक से अधिक इंटरफ़ेस के लिए बाध्य करने का कोई तरीका नहीं है।

लिनक्स में कुछ टीसीपी उपकरण हैं जो इसे संभव बनाते हैं। इस सेटअप में, आप 127.0.0.1 पर सुनने के लिए mysql को कॉन्फ़िगर करेंगे और फिर मनमाने इंटरफेस पर इसे उजागर करने के लिए redir का उपयोग करेंगे

मैं एक वर्चुअल बॉक्स गेस्ट को होस्ट मशीन पर स्थापित mysql देखने में मदद करने के लिए इसका उपयोग कर रहा हूं।

redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &

नोट MySQL> = 8.0.13 एक से अधिक इंटरफ़ेस के लिए बाध्यकारी है।
txyoji

6

मुझे लगता है कि आपका प्रश्न इस बग से संबंधित है । http://bugs.mysql.com/bug.php?id=14979 बग रिपोर्ट कुछ वर्कअराउंड का सुझाव देती है।


2005 से एक MySQL सुविधा अनुरोध डेटिंग!
टोनिन

5

MySQL 8.0.13 से पहले, --ind-address एक एकल पता मान को स्वीकार करता है, जो एक एकल गैर-वाइल्डकार्ड IP पता या होस्ट नाम या वाइल्डकार्ड एड्रेस स्वरूपों में से एक निर्दिष्ट कर सकता है जो कई नेटवर्क इंटरफेस पर सुनने की अनुमति देता है (*, 0.0) .0.0, या: :)।

MySQL 8.0.13 के अनुसार, - बिंद-पता केवल वर्णित के रूप में एक मान को स्वीकार करता है, या अल्पविराम से अलग किए गए मानों की सूची। जब विकल्प कई मानों की सूची का नाम देता है, तो प्रत्येक मान में एक एकल गैर-वाइल्डकार्ड IP पता या होस्ट नाम निर्दिष्ट होना चाहिए; कोई भी वाइल्डकार्ड पता प्रारूप (*, 0.0.0.0, या: :) निर्दिष्ट नहीं कर सकता है।

स्रोत: https://dev.mysql.com/doc/refman/8.0/en/server-options.html


3

में my.cnf परिवर्तन (आमतौर पर लिनक्स पर /etc/mysql/my.cnf या खिड़कियों के लिए जाँच इस सवाल का जवाब।

bind-address                   = 127.0.0.1

सेवा

bind-address                   = 0.0.0.0

फिर विंडोज़ पर mysql (उबंटू सेवा mysql पुनरारंभ पर) को पुनरारंभ करें आमतौर पर विन + आर सेवाओं को पुनः आरंभ करें।

0.0.0.0 इसे सभी उपलब्ध आईपी के साथ बांधने के लिए कहता है जो my.cnf में भी दिया गया है

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