Mysql अपने ग्राहकों के होस्टनाम का निर्धारण कैसे करता है?


14

मैं एक MySQL उपयोगकर्ता बनाने की कोशिश कर रहा हूं जिसे केवल एक विशिष्ट होस्टनाम से MySQL डेटाबेस से कनेक्ट करने की अनुमति दी जाएगी।

सभी को db_name पर दें। * 'user_name'@'appserver-lan.mydomain.com' को 'some_passwd' द्वारा पहचाना गया

Mysql db पर उपयोगकर्ता तालिका की जाँच करके, मैं देख सकता हूँ कि उपयोगकर्ता सफलतापूर्वक बनाया गया था:

mysql का उपयोग करें; उपयोगकर्ता का चयन करें जहां उपयोगकर्ता = 'user_name' और होस्ट = 'appserver-lan.mydomain.com'

या

'username'@'appserver-lan.mydomain.com' के लिए अनुदान दिखाएं

मेरे द्वारा होस्ट किया गया होस्टनाम एक amazon-ec2 नाम का उपनाम है, जिसे जब AWS DNS सर्वर द्वारा हल किया जाता है, तो इसका परिणाम LAN में होता है:

[रूट @ db_server ~] # मेजबान appserver-lan.mydomain.com

appserver-lan.mydomain.com ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ec2-xxx-xxx-xxx-xxx.compute-1 .amazonaws.com के लिए एक उपनाम है। पते 10.xxx है .xxx.xxx

समस्या यह है कि जब मैं इस appserver-lan से डेटाबेस LAN IP से कनेक्ट करने का प्रयास करता हूं, तो मुझे एक एक्सेस अस्वीकृत त्रुटि मिलती है, हालांकि पासवर्ड सही है। यहां अजीब बात यह है कि होस्टनाम त्रुटि में दिखाया गया वह होस्टनाम नहीं है जिसे मैंने उपयोगकर्ता द्वारा बनाए जाने पर निर्दिष्ट किया था:

ERROR 1045 (28000): उपयोगकर्ता ' user_name ' @ ' appserver.mydomain.com ' के लिए अस्वीकृत (पासवर्ड का उपयोग कर: YES)

तो, मेरा सवाल है: mysql क्लाइंट होस्टनाम कैसे निर्धारित करता है? मेरा मानना ​​है कि यह रिवर्स DNS लुकअप द्वारा ऐसा नहीं करता है, क्योंकि मैंने जाँच की है और यह "appserver.mydomain.com" को इंगित नहीं करता है और न ही "appserver-lan.mydomain.com" को। इसके अतिरिक्त, db सर्वर में appserver पर / etc / मेजबान से संबंधित कोई प्रविष्टियाँ नहीं हैं।

संक्षेप में, मुझे पूरा यकीन है कि यह एक होस्टनाम रिज़ॉल्यूशन समस्या है, क्योंकि होस्ट "%" या LAN IP के लिए विशेषाधिकार देने से ठीक काम होता है।

मैं क्या याद कर रहा हूँ के किसी भी विचार?


आपको क्या लगता है कि यह डीएनएस रिवर्स नहीं है? जब आप करते हैं तो क्या होता है host -t PTR 10.1.2.3?
Zoredache

host -t PTR 10.xxx.xxx.xxx.xxx xxx.xxx.xxx.10.in-addr.arpa डोमेन नाम सूचक आईपी -10-xxx-xxx -ec2.internal। जैसा कि आप देख सकते हैं, यह त्रुटि संदेश (appserver.mydomain.com) में दिखाया गया होस्टनाम नहीं है और इससे मुझे लगता है कि MySQL रिवर्स लुकअप नहीं कर रहा था।
लुइस फर्नांडो एलेन

जवाबों:


13

यह रिवर्स DNS लुकअप का उपयोग करता है। यह क्लाइंट का IP पता लेता है और उस नाम के लिए जो भी PTR रिकॉर्ड दिया जाता है उसका उपयोग करता है।

मेरी राय में नाम के आधार पर प्रमाणीकरण करना बहुत उपयोगी नहीं है, मेरा सुझाव है कि आप इसके बजाय आईपी पते का उपयोग करने पर विचार करें।

इस दस्तावेज़ को देखें कि मैसकॉल DNS का उपयोग कैसे करता है


लिंक के लिए धन्यवाद, @Zoredache। मैं IP पतों का उपयोग करने से बचना चाहूंगा क्योंकि AWS आंतरिक इंटरफ़ेस समय-समय पर डीएचसीपी और उसके आईपी परिवर्तनों का उपयोग करता है (जब भी सर्वर बूट, मुझे लगता है), साथ ही साथ इसका पीटीआर रिकॉर्ड भी। यहां अजीब बात यह है कि चूंकि यह रिवर्स लुकअप का उपयोग करता है, इसलिए इसे "उपयोगकर्ता @ ip-10-xxx-xxx-xxx.ec2.internal के लिए प्रवेश निषेध" कहना चाहिए। appserver.mydomain.com के बजाय ...
लुइस फर्नांडो एलेन

1
क्या आप IP / नाम प्रमाणीकरण को पूरी तरह से छोड़ सकते हैं, इसके बजाय या तो होस्ट-आधारित फ़ायरवॉल या सेटअप SSL और प्रमाणपत्र-आधारित प्रमाणीकरण का उपयोग करें।
Zoredache

3

MySQL होस्ट नाम प्राप्त करने के लिए IP पते पर एक रिवर्स DNS लुक अप कर रहा होगा। यदि आप AWS EC2 में चल रहे हैं, तो आप अपने सर्वर को एक लोचदार आईपी प्रदान कर सकते हैं (यह किसी भी अतिरिक्त खर्च नहीं करता है) और फिर amazon को अपने होस्टनाम में जाने के लिए लोचदार IP के लिए रिवर्स DNS सेट करने के लिए कहें।

ईसी 2 में आपका डीबी सर्वर भी है? क्योंकि यदि ऐसा है तो यह उदाहरण के निजी आईपी पते का उपयोग करेगा, अन्यथा यह सार्वजनिक आईपी पते का उपयोग करेगा। ऐसा लगता है कि आप पोस्ट करते हैं क्योंकि आप appserver-lan 10.XXX.XXX.XXX निजी आईपी आपके सर्वर को सौंपे गए हैं, न कि पुटाइल।

मुझे यकीन नहीं है कि एक अलग क्षेत्र के साथ संचार करते समय आईपी पते का उपयोग किया जाएगा, क्योंकि मेरे पास केवल उसी क्षेत्र के भीतर सर्वर हैं।


हां, यह EC2 के साथ-साथ उसी क्षेत्र में भी है। टिप के लिए धन्यवाद, एंडी। मुझे नहीं पता था कि EC2 इंस्टेंस आपके बीच संचार के लिए आंतरिक आईपी का उपयोग करता है, भले ही आप संचार के लिए वैध आईपी निर्दिष्ट करें। इसने मेरी समस्या को हल कर दिया =]
लुइस फर्नांडो एलेन

3

मुझे अभी भी ऐसी ही समस्या है, जहाँ mysql सर्वर गलत तरीके से DNS लुकअप को उल्टा कर रहा है।

मेरे पास समस्या यह थी कि सर्वर के पास 'user'@1.1.3.4' के साथ-साथ 'user'@'reverse.dns' की अनुमति थी। केवल IP पते वाले उपयोगकर्ता के पास न्यूनतम अनुमतियाँ थीं, लेकिन mysql सर्वर होस्टनाम के साथ एक के बजाय उस उपयोगकर्ता की अनुमतियों का उपयोग कर रहा था, और "उपयोगकर्ता के लिए अस्वीकृत" उपयोगकर्ता'@'1.2.3.4 'संदेश लौटा रहा था। आईपी ​​पते के साथ उपयोगकर्ता को हटाने से समस्या ठीक हो गई और सीर को होस्टनाम पर अन्य उपयोगकर्ता का उपयोग करने के लिए मजबूर किया गया।


0

मैंने उन समस्याओं को भी देखा है जहां आईपीवी 4 और आईपीवी 6 होस्टनाम और आईपी पते मेल नहीं खाते हैं, और जहां एक होस्ट नाम केवल उपयोगकर्ता की अनुमति के लिए उपयोग किया जाता है। उदाहरण के लिए, जहाँ IPV6 रिवर्स DNS है, लेकिन आगे IPV6 DNS नहीं है।

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