पूरे सबनेट के लिए MySQL को रिमोट एक्सेस कैसे दें?


93

मैं इस कोड का उपयोग करके आसानी से एक आईपी तक पहुंच प्रदान कर सकता हूं:

$ mysql -u root -p
Enter password:    
mysql> use mysql    
mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password';     
mysql> FLUSH PRIVILEGES;

लेकिन मुझे डेटाबेस को दूर से एक्सेस करने के लिए पूरे सबनेट 192.168.1 * की अनुमति देने की आवश्यकता है।

मैं उसे कैसे कर सकता हूँ?

जवाबों:


100

संपादित करें: इस पृष्ठ पर माल्विनस के उत्तर को देखने और उभारने पर विचार करें । Netmasks एक बहुत अधिक सुंदर समाधान है।


बस आईपी पते में वाइल्डकार्ड के रूप में एक प्रतिशत चिह्न का उपयोग करें।

से http://dev.mysql.com/doc/refman/5.1/en/grant.html

आप होस्ट नाम में वाइल्डकार्ड निर्दिष्ट कर सकते हैं। उदाहरण के लिए, डोमेन में किसी भी होस्ट के लिए user_name@'%.example.com'लागू होता है , और क्लास सी सबनेट में किसी भी होस्ट के लिए लागू होता है ।user_nameexample.comuser_name@'192.168.1.%'user_name192.168.1


6
मैंने इसे बस इस तरह किया, लेकिन, कहते हैं, यह क्या लागू नहीं होता है: user_name@'192.168.1.my-hacked-rnds.killing.mysql.com '???? अब मैं चलता हूँ, क्योंकि यह MySQL मुझे लगता है कि मैं इसका जवाब नहीं जानना चाहता हूँ।
फ़्लोरियन हीगल

+ फ्लोरियन, मुझे लगता है कि यह केवल '%' का उपयोग करके धड़कता है क्योंकि यह सुरक्षा की एक परत को जोड़ता है जिसे दूर किया जाना चाहिए, लेकिन मुझे लगता है कि आप इसकी कमजोरी के बारे में एक अच्छा बिंदु बनाते हैं। मैं निश्चित रूप से इस कॉन्फ़िगरेशन को अन्य माध्यमों से पूरक करता हूं, जैसे कि डेटाबेस सर्वर को एक अलग सबनेट में लॉक करना जो मैं अन्य चीजों के अलावा, आपकी चिंताओं को नकारने के लिए फ़ायरवॉल के माध्यम से पहुंच को नियंत्रित कर सकता हूं।
जोसिया

22
'पसंद' 192.168.1.my-hacked-rnds.killing.mysql.com 'विशेष रूप से में संबोधित कर रहे हैं उदाहरण dev.mysql.com/doc/refman/5.5/en/account-names.html : करने के लिए इस तरह के प्रयास पन्नी, MySQL अंकों और डॉट के साथ शुरू होने वाले मेजबान नामों से मेल खाता है। ... एक आईपी वाइल्डकार्ड मान केवल आईपी पते से मेल खा सकता है, न कि मेजबान नामों से।
स्टीफन लासवर्स्की

118

ऐसा लगता है कि आप भी एक netmask का उपयोग कर सकते हैं , जैसे

GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...

7
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह एकमात्र तकनीकी सही है। कम से कम 5.5 के बाद से समर्थित: dev.mysql.com/doc/refman/5.5/en/account-names.html
lifeofguenter

6
"172.16.0.0/16" जैसे CIDR नोटेशन का उपयोग करने का प्रयास न करें, यह काम नहीं करता है। हमेशा पूर्ण नेटमास्क का उपयोग करें।
ओलिवर आर।

ऐसा प्रतीत होता है कि आपको रेंज में पहले आईपी पते का उपयोग करना होगा; उदाहरण के लिए 192.168.0.34/255.255.255.0 का उपयोग करना विफल रहेगा!
सैंडर

@SanderBackus: 192.160.0.34/255.255.255.0 वही है 192.168.0.34/24जो वास्तव में कोई मतलब नहीं है ( /24इसका मतलब है कि अंतिम संख्या 0 से 255 तक हो सकती है, जो आपके 34 के मूल्य की अनदेखी करता है)। क्या यह काम करता है अगर आप आईपी के लिए वैध मास्क का उपयोग करते हैं, जैसे 192.168.0.34/255.255.255.252?
माल्विनस

@ मलाइवाइस मेरी बात थी। यदि आप 192.160.0.34/255.255.255.0 का उपयोग करते हैं तो mysql 192.160.0.34 की अनुमति नहीं देता है। मेरा मतलब था फुल / 24 (हां मैंने डॉक्युमेंट के रूप में फुल नेटमास्क का इस्तेमाल किया था), लेकिन जाहिर है अगर आपको फुल रेंज की अनुमति देने के लिए 192.160.0.0/255.255.255.0 का उपयोग करना है।
सैंडर

28

आप इस तरह से अपने वाइल्डकार्ड के रूप में '%' का उपयोग करेंगे:

GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';

12
mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';  

वाइल्डकार्ड वर्ण "*" के बजाय "%" है


5

बस एक ख़ासियत का मैं सामना करना पड़ा है:
ध्यान दें:

db server:  192.168.0.101
web server: 192.168.0.102

यदि आपके पास mysql.user में एक उपयोगकर्ता है जिसे 'user'@'192.168.0.102'पासवर्ड 1 और अन्य के साथ परिभाषित किया गया है'user'@'192.168.0.%' पासवर्ड 2 के साथ,

फिर,

यदि आप db सर्वर से पासवर्ड 2 के साथ 'यूजर' के रूप में वेब सर्वर से कनेक्ट करने का प्रयास करते हैं,

इसका परिणाम 'एक्सेस अस्वीकृत' त्रुटि के रूप में होगा क्योंकि 'user'@'192.168.0.102'वाइल्डकार्ड 'user'@'192.168.0.%'प्रमाणीकरण पर एकल आईपी प्रमाणीकरण का उपयोग किया जाता है।


2
मुझे यकीन नहीं है कि यह सवाल का जवाब है। यदि यह मूल प्रश्न का सीधा उत्तर नहीं देता है तो इसे टिप्पणी के रूप में पोस्ट किया जाना चाहिए।
Kmeixner

13
Kmeixner, आप उसे एक टिप्पणी में इतना लिखने की उम्मीद करते हैं? कुछ सामान्य ज्ञान लागू करें और रोबोट बनना बंद करें। यह समुदाय डेवलपर्स की मदद करने के लिए है ताकि उनके जीवन को मुश्किल न बनाया जा सके।
user1735921

0

सर्वर कनेक्ट करने के बाद और आप अपने होस्ट से कनेक्ट करना चाहते हैं, आपको नीचे दिए गए चरणों को करना चाहिए:

  1. mysql लिखें खोलने के लिए mysql
  2. लिखो GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect' ;
  3. प्रेस नियंत्रण और एक्स mysql से बाहर निकलें
  4. लिखो nano /etc/mysql/my.cnf
  5. बाइंड-पता = 127.0.0.1 से पहले # लिखेंmy.cnf फ़ोल्डर में
  6. # बाइंड-एड्रेस = 127.0.0.1
  7. नियंत्रण + X के साथ my.cnf फ़ोल्डर को सहेजें
  8. लिखो service mysql restart
  9. आप अपने होस्ट पर नाविक के माध्यम से जुड़ सकते हैं

0

@Malvineaus जवाब से प्रेरित होकर मैंने इसे स्वयं आज़माया और देखा कि यह मेरे लिए काम नहीं करता है।

आप सबनेट मास्क को '192.168.1।%' या '192.168.1.0/255.255.255.0' के साथ निर्दिष्ट कर सकते हैं, लेकिन सबनेट हमेशा पूर्ण ऑक्टेट पर होना चाहिए। देख https://mariadb.com/kb/en/create-user/#host-name-component । परिणामस्वरूप विनिर्देशन के एक तरीके और दूसरे के बीच कार्यक्षमता समान है।

उदाहरण के लिए '192.168.1.0/255.255.255.128' काम नहीं करेगा क्योंकि यह पूर्ण रूप से अष्टक सीमा पर नहीं है।

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