किसी दूरस्थ MySQL सर्वर से कनेक्ट करने के लिए, चाहे वह सीधे हो या SSH सुरंग के माध्यम से, आप unix_socket
का उपयोग नहीं कर सकते प्रमाणीकरण प्लगइन जिसके लिए डीबी सर्वर ऑपरेटिंग सिस्टम पर यूनिक्स सॉकेट फ़ाइल तक स्थानीय पहुंच की आवश्यकता होती है।
unix_socket
प्लगइन एक विशेष प्रकार की फाइल (यूनिक्स सॉकेट) का उपयोग करके कार्यान्वित किया जाता है जो * निक्स सिस्टम में इंटर-प्रोसेस कम्युनिकेशन (आईपीसी) का एक रूप है। यह आपके mysql CLI क्लाइंट को DB से बात करने की अनुमति देता है और इसके लिए सॉकेट फ़ाइल तक स्थानीय पहुँच की आवश्यकता होती है (यानी:/tmp/mysql.sock
) जब आप सॉकेट से कनेक्ट करते हैं, तो unix_socket
प्लगइन (सर्वर-साइड) सॉकेट से जुड़े उपयोगकर्ता का यूआईडी प्राप्त करेगा (यानी:आपका उपयोगकर्ता) और पासवर्ड की आवश्यकता के बिना स्वचालित रूप से आपको प्रमाणित करेगा।
संभावित समाधान:
यदि आप मशीन बी से गैर-रूट उपयोगकर्ता से जुड़ते हैं, तो आपको अपने गैर-रूट ऑपरेटिंग सिस्टम उपयोगकर्ता खाते के नाम के समान नाम वाला एक डीबी उपयोगकर्ता बनाना होगा।
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
अब आप बस चलाकर अपने उपयोगकर्ता खाते और mysql CLI क्लाइंट का उपयोग करके mysql से जुड़ सकते हैं:
youruser:~$ mysql
यदि आप रूट उपयोगकर्ता के साथ DB से जुड़ना चाहते हैं, तो आपको या तो रूट खाते तक पहुंच की आवश्यकता है या mysql क्लाइंट को चलाने के लिए अपने उपयोगकर्ता से जुड़ी एक sudo नीति की आवश्यकता है।
youruser:~$ sudo mysql
आप स्पष्ट रूप से अपने डीबी रूट खाते में नियमित रूप से प्रमाणित नेटवर्क पहुंच को सक्षम कर सकते हैं। इससे सुरक्षा समस्याएं हो सकती हैं, इसलिए इसे लोकलहोस्ट तक सीमित करना बेहतर है:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
यदि आप अपना लॉगिन प्रमाणित कर सकते हैं तो अब आप किसी भी स्थानीय ऑपरेटिंग सिस्टम खाते से लॉगिन कर सकते हैं:
youruser:~$ mysql -u root -p