Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में उपयोगकर्ताओं और प्रमाणीकरण को कैसे प्रबंधित करें


परिचय

उपयोगकर्ता प्रबंधन MySQL डेटाबेस सिस्टम को प्रबंधित करने की उम्मीद करने वाले किसी भी व्यक्ति की सबसे महत्वपूर्ण जिम्मेदारियों में से एक है। अपने परिवेश में उपयोगकर्ताओं और सेवाओं का सर्वोत्तम प्रतिनिधित्व करने के लिए उपयोगकर्ता खातों को बनाना, बदलना और हटाना, पहुंच को बंद करने, परिवर्तनों की गुंजाइश सीमित करने, और संशोधनों के लिए ऑडिटिंग और जवाबदेही को लागू करने के लिए आधार तैयार करने में मदद करता है।

इस गाइड में, हम बात करेंगे कि MySQL के भीतर उपयोगकर्ता खातों को कैसे प्रबंधित किया जाए। सबसे पहले, हम चर्चा करेंगे कि MySQL में एक वैध उपयोगकर्ता क्या है और आपको सिस्टम में अतिरिक्त उपयोगकर्ताओं को जोड़ने का तरीका दिखाएगा। यह इस बारे में चर्चा की ओर ले जाता है कि प्रत्येक उपयोगकर्ता के लिए प्रमाणीकरण को कैसे कॉन्फ़िगर किया जाए और सिस्टम संभावनाओं की सूची से प्रमाणीकरण विकल्प कैसे चुनता है। हम मौजूदा उपयोगकर्ताओं में परिवर्तन करने के बारे में बात करना जारी रखेंगे, आपके द्वारा बनाए गए खातों से लॉग इन कैसे करें, और उन उपयोगकर्ताओं को कैसे हटाएं जिनकी अब आपको आवश्यकता नहीं है।



आवश्यकताएं

इस गाइड का पालन करने के लिए, आपको उपयुक्त विशेषाधिकारों के साथ एक MySQL सर्वर पर एक खाते की आवश्यकता होगी।


आदेश हम उपयोग करेंगे

MySQL के भीतर उपयोगकर्ताओं को बनाने, संशोधित करने और हटाने के लिए, आपको आवश्यक मुख्य कमांड हैं:

  • CREATE USER :एक नया उपयोगकर्ता खाता बनाएं
  • ALTER USER :मौजूदा उपयोगकर्ता खाते में परिवर्तन करें
  • DROP USER :मौजूदा उपयोगकर्ता खाते को हटा दें


आवश्यक विशेषाधिकार

ऊपर दिए गए आदेशों को निष्पादित करने के लिए, आपको CREATE USER . के साथ एक खाते के साथ MySQL में लॉगिन करना होगा विशेषाधिकार CREATE USER विशेषाधिकार आपको अन्य कार्रवाइयों के साथ उपयोगकर्ताओं को बनाने, संशोधित करने, हटाने और नाम बदलने की अनुमति देता है। हमें SELECT . की भी आवश्यकता होगी mysql . पर विशेषाधिकार मौजूदा उपयोगकर्ताओं के बारे में जानकारी देखने के लिए डेटाबेस।

वरीयता के क्रम में, आपको निम्न का उपयोग करके लॉगिन करना चाहिए:

  • एक सीमित खाता जिसमें CREATE USER . है विशेषाधिकार और SELECT mysql . पर विशेषाधिकार डेटाबेस
  • root या प्रशासनिक उपयोगकर्ता जिसके पास MySQL के भीतर पूर्ण विशेषाधिकार हैं



यह समझना कि MySQL उपयोगकर्ता खातों को कैसे परिभाषित और व्याख्या करता है

इससे पहले कि हम नए खाते बनाना शुरू करें, MySQL द्वारा उपयोगकर्ताओं को बनाने और संदर्भित करने के लिए उपयोग किए जाने वाले विभिन्न खातों से परिचित होने के लिए कुछ समय लेना सहायक होता है। कनेक्शन को प्रमाणित करने के लिए यह किस उपयोगकर्ता खाते का उपयोग करेगा, यह समझने के लिए आपको MySQL के प्रमाणीकरण एल्गोरिदम से परिचित होना चाहिए।


उपयोगकर्ता खातों के लिए MySQL का सिंटैक्स क्या है?

MySQL में, उपयोगकर्ता खाते सूचना के दो अलग-अलग टुकड़ों से बने होते हैं, जो एक एट साइन (@):

. से जुड़ते हैं
  • उपयोगकर्ता नाम
  • वह होस्ट जिससे उपयोगकर्ता कनेक्ट हो रहा है

सामान्य तौर पर, सिस्टम पर उपयोगकर्ता खाते निम्न की तरह दिखाई देंगे:

'<user>'@'<host>'

एकल उद्धरणों का उपयोग, ऊपर के रूप में, उपयोगकर्ता खाते के उपयोगकर्ता और होस्ट घटकों को अलग-अलग लपेटने के लिए किया जा सकता है। वे कभी-कभी आवश्यक होते हैं यदि किसी भी घटक में ऐसे वर्ण होते हैं जिनका अन्यथा गलत अर्थ निकाला जाएगा। सामान्य तौर पर, उन्हें स्पष्ट रूप से जोड़ना हमेशा एक अच्छा विचार होता है।

इसलिए केवल 'john' . नामक खाता रखने के बजाय , MySQL में, पूर्ण खाता नाम के लिए किसी प्रकार के होस्ट की आवश्यकता होगी, जैसे 'john'@'localhost' . इसका मतलब है कि कई 'john' . हो सकते हैं सिस्टम पर खाते हैं और MySQL उनमें से प्रत्येक को एक अद्वितीय खाते के रूप में तब तक देखेगा जब तक वे किसी भिन्न डोमेन से आ रहे हों।

यह सब कहने के साथ, ऐसे उपयोगकर्ता खातों को परिभाषित करना संभव है जिनमें कोई उपयोगकर्ता या होस्ट घटक नहीं है, लेकिन ऐसे महत्वपूर्ण निहितार्थ हैं जिनसे आपको अवगत होना चाहिए।

आप एक खाली स्ट्रिंग का उपयोग करके एक उपयोगकर्ता खाते को उपयोगकर्ता मान के बिना परिभाषित कर सकते हैं:

''@'<host>'

उदाहरण के लिए, आप एक उपयोगकर्ता को ''@'localhost' . के रूप में बना सकते हैं . यह उपयोगकर्ता किसी . से मेल खाएगा स्थानीय कंप्यूटर से उपयोगकर्ता नाम कनेक्ट करना।

इसी तरह, आपके पास एक उपयोगकर्ता खाता हो सकता है जो किसी भी होस्ट से मेल खाता हो। खाली स्ट्रिंग का उपयोग करने के बजाय, होस्ट मानों के लिए, आप % . का उपयोग करेंगे वाइल्डकार्ड, इस तरह:

'<user>'@'%'

उदाहरण के लिए, यदि आप 'john'@'%' . बनाते हैं , वह खाता एक 'john' . से मेल खाएगा उपयोगकर्ता किसी . से कनेक्ट हो रहा है मेजबान।



MySQL उपयोगकर्ताओं को कैसे प्रमाणित करता है?

यह समझना कि MySQL वास्तव में प्रत्येक प्रमाणीकरण अनुरोध को कैसे संसाधित करता है, प्रमाणीकरण समस्याओं के एक सामान्य वर्ग से बचने के लिए बहुत महत्वपूर्ण है जो उचित, लेकिन गलत धारणाओं के परिणामस्वरूप होता है। MySQL आलेख में प्रमाणीकरण और प्राधिकरण के हमारे परिचय में इस पर कुछ गहराई से चर्चा की गई थी।

कनेक्शन अनुरोध को प्रमाणित करते समय, MySQL user . के भीतर कई फ़ील्ड का उपयोग करता है इसकी आंतरिक तालिका mysql डेटाबेस यह तय करने के लिए कि कनेक्शन की अनुमति दी जाए या नहीं। MySQL अधिकतम का उपयोग करेगा एक कनेक्शन को प्रमाणित करने का प्रयास करने के लिए उपयोगकर्ता खाता रिकॉर्ड। इसका मतलब यह है कि MySQL को यह तय करने के लिए एक तरीके की जरूरत है कि किस उपयोगकर्ता खाते का उपयोग किया जाए यदि एक से अधिक खाते कनेक्शन से मेल खा सकते हैं।

उपयोगकर्ताओं को प्रमाणित करने के लिए MySQL का एल्गोरिथ्म सर्वर के शुरू होने पर शुरू होता है। स्टार्ट अप पर, MySQL संपूर्ण mysql.user को लोड करता है स्मृति में तालिका। यह तब भी करता है जब नियमित MySQL कमांड का उपयोग करके उपयोगकर्ता खाते बनाए जाते हैं। जैसे ही यह तालिका को लोड करता है, यह प्रविष्टियों को सर्वोच्च प्राथमिकता से निम्नतम क्रम में क्रमबद्ध करता है।

MySQL Host . का उपयोग करता है प्राथमिक सॉर्ट फ़ील्ड के रूप में कॉलम और अधिक विशिष्ट मानों वाले परिणामों को प्राथमिकता देता है। इसलिए शाब्दिक मानों को सर्वोच्च प्राथमिकता के रूप में शीर्ष पर क्रमबद्ध किया जाता है और वे जो वाइल्डकार्ड का उपयोग करते हैं, जैसे % , नीचे क्रमबद्ध हैं। अंतिम प्रविष्टियाँ वे होती हैं जिनमें केवल % . होता है बिना किसी अन्य वर्ण के, उसके बाद ऐसी प्रविष्टियां आती हैं जिनमें पूरी तरह से खाली होस्ट होता है।

user कॉलम का उपयोग किसी भी प्रविष्टि के लिए द्वितीयक सॉर्ट फ़ील्ड के रूप में किया जाता है जिसमें समान Host . होता है मूल्य। एक बार फिर, अधिक सटीक मिलानों को प्राथमिकता दी जाती है। चूंकि user कॉलम वाइल्डकार्ड का उपयोग नहीं कर सकता है, सभी प्रविष्टियां समान स्तर पर हैं सिवाय उन लोगों को छोड़कर जिनके पास खाली user है मूल्य। जिन्हें नीचे तक क्रमबद्ध किया गया है। यदि कोई प्रविष्टि रिक्त user . के साथ है मान का चयन किया जाता है, तो उपयोगकर्ता को "अनाम उपयोगकर्ता" के रूप में प्रमाणित किया जाएगा, जो आमतौर पर कोई विशेषाधिकार नहीं होने के बराबर होता है।

अब, जब भी कोई कनेक्शन अनुरोध किया जाता है, तो MySQL ऊपर से नीचे तक मेमोरी में अपनी सॉर्ट की गई तालिका से गुजरता है। यह पहले . का उपयोग करता है प्रविष्टि यह उपयोगकर्ता को प्रमाणित करने के लिए पाता है, भले ही अन्य प्रविष्टियां हों जो मेल खाती हों। यदि क्लाइंट उस प्रविष्टि द्वारा परिभाषित विधि का उपयोग करके प्रमाणित करने में विफल रहता है, तो कनेक्शन विफल हो जाएगा और किसी अन्य प्रविष्टि की जाँच नहीं की जाएगी।



क्या हैं किसी उपयोगकर्ता या होस्ट को MySQL उपयोगकर्ता खाता परिभाषा में शामिल न करने के निहितार्थ?

यदि आप उपयोगकर्ता या होस्ट घटक के बिना उपयोगकर्ता खाते बनाते समय सावधान नहीं हैं, तो MySQL के प्रमाणीकरण एल्गोरिथ्म के कारण समस्याएँ उत्पन्न हो सकती हैं। इसका कारण यह है कि जिस तरह से MySQL यह तय करता है कि आपको प्रमाणित करने के लिए किस रिकॉर्ड का उपयोग करना है, वह अनपेक्षित और आश्चर्यजनक हो सकता है।

उदाहरण के लिए, यदि कोई उपयोगकर्ता MySQL को उपयोगकर्ता भाग के साथ रिक्त स्ट्रिंग के रूप में प्रमाणित करता है, तो MySQL उन्हें शेष सत्र के लिए "अनाम उपयोगकर्ता" मानेगा। एक नियम के रूप में, अनाम उपयोगकर्ताओं के पास लगभग कोई शक्ति नहीं होती है और एक बार कनेक्ट होने पर बहुत कम कर सकते हैं। किसी भिन्न उपयोगकर्ता खाते का उपयोग करके प्रमाणित करने का प्रयास करते समय गलती से अज्ञात उपयोगकर्ता के रूप में प्रमाणित करना भी संभव है।

वाइल्डकार्ड होस्ट . का उपयोग करने की चुनौती उपयोगकर्ता खातों के लिए यह है कि अन्य उपयोगकर्ता खाते शामिल हैं एक होस्ट मान वाइल्डकार्ड का उपयोग करने वाले उपयोगकर्ता खाते को आसानी से छिपा सकता है, या अनुपलब्ध बना सकता है।

उदाहरण के लिए, यदि आपके पास 'emily'@'%' . के रूप में परिभाषित एक उपयोगकर्ता खाता है , आप 'emily' . को प्रमाणित करने में सक्षम होने की उम्मीद कर सकते हैं किसी भी मेजबान से। हालांकि, यदि आपके पास एक खाली उपयोगकर्ता वाला उपयोगकर्ता खाता है, लेकिन एक होस्ट मान है जो होस्ट 'emily' से मेल खाता है से कनेक्ट हो रहा है, MySQL इसके बजाय उस खाते का उपयोग करके प्रमाणित करेगा (जिससे ऊपर वर्णित एक अनाम उपयोगकर्ता लॉगिन हो जाएगा)।

तो एक उदाहरण के रूप में, MySQL निम्नलिखित खातों को निम्नलिखित क्रम में क्रमबद्ध करेगा:

प्राथमिकता MySQL खाता टिप्पणियां
1 'emily'@'localhost' और 'emily'@'example.com' ये समान प्राथमिकता वाले हैं, जो ठीक है क्योंकि उनमें से केवल एक के लिए कनेक्शन से मेल खाना संभव है।
2 ''@'localhost' और ''@'example.com' ये दो प्रविष्टियां, फिर से एक ही प्राथमिकता की हैं। चूंकि उनके पास उपयोगकर्ता घटक नहीं है, लेकिन वे करते हैं एक शाब्दिक मेजबान घटक है, उन्हें उन प्रविष्टियों के नीचे रखा गया है जिनमें सटीक मेजबान मान हैं।
3 'emily'@'%.example.com' इस प्रविष्टि में होस्ट घटक में एक वाइल्डकार्ड है, इसलिए इसे सटीक होस्ट मान वाली प्रविष्टियों की तुलना में कम प्राथमिकता दी जाती है।
4 ''@'%.example.com' इस प्रविष्टि को उन प्रविष्टियों के साथ समूहीकृत किया जाता है जिनके होस्ट मान के भीतर वाइल्डकार्ड होता है। चूंकि इसका कोई उपयोगकर्ता घटक नहीं है, इसलिए यह इस समूह में सबसे नीचे है।
5 'emily'@'%' इस प्रविष्टि का एक होस्ट मान है जिसमें केवल एक वाइल्डकार्ड होता है। चूंकि यह किसी भी होस्ट से मेल खाता है, इसलिए इसकी प्राथमिकता बहुत कम है।
7 ''@'%' इस प्रविष्टि का उपयोग किसी भी होस्ट से किसी भी उपयोगकर्ता को अज्ञात उपयोगकर्ता के रूप में प्रमाणित करने के लिए किया जा सकता है। यह अत्यंत निम्न प्राथमिकता का है क्योंकि यह किसी भी कनेक्शन से मेल खाता है।
6 'emily'@'' इस प्रविष्टि में पूरी तरह से रिक्त होस्ट मान है, जो केवल वाइल्डकार्ड होस्ट वाले होस्ट से भी कम प्राथमिकता वाला है।
8 ''@'' यह न्यूनतम संभव प्राथमिकता वाला उपयोगकर्ता है। इसमें कोई होस्ट जानकारी नहीं है इसलिए यह होस्ट सॉर्टिंग के दौरान अंत में है। चूंकि इसमें एक रिक्त उपयोगकर्ता भी है, इसलिए इसे इस समूह में अन्य प्रविष्टियों के नीचे रखा गया है। उपयोगकर्ता के बिना सभी प्रविष्टियों की तरह, इस प्रविष्टि से प्रमाणित कनेक्शनों को एक अनाम उपयोगकर्ता के रूप में साइन इन किया जाएगा।



आप उपयोगकर्ता कैसे बनाते हैं?

अब जब आप यह महसूस कर चुके हैं कि MySQL उपयोगकर्ता खातों को कैसे संभालता है, तो हम कुछ नए उपयोगकर्ता बनाना शुरू कर सकते हैं। पूर्वापेक्षाओं में वर्णित विशेषाधिकार वाले उपयोगकर्ता के साथ लॉगिन करना याद रखें।


बेसिक सिंटैक्स

नया उपयोगकर्ता बनाने का मूल सिंटैक्स अपेक्षाकृत सरल है। आप CREATE USER . का उपयोग करते हैं कमांड करें और फिर नए खाते के लिए उपयोगकर्ता और होस्ट निर्दिष्ट करें:

CREATE USER '<user>'@'<host>';

यह निर्माण के समय अपने उपयोगकर्ता और होस्ट से परे किसी भी विवरण को कॉन्फ़िगर किए बिना एक मूल खाता बनाएगा।



आप पासवर्ड के साथ उपयोगकर्ता कैसे बनाते हैं?

अक्सर, आप उपयोगकर्ता बनाते समय प्रमाणीकरण को कॉन्फ़िगर करना चाहते हैं। आप वैकल्पिक IDENTIFIED BY . जोड़कर ऐसा कर सकते हैं CREATE USER . पर क्लॉज कथन:

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

यह पहले की तरह एक नया उपयोगकर्ता खाता बनाता है, और उसी समय खाते के लिए एक पासवर्ड निर्दिष्ट करता है। हम इस बात को कवर करेंगे कि इस तथ्य के बाद पासवर्ड कैसे असाइन किया जाए या बाद में उपयोगकर्ता का पासवर्ड कैसे बदला जाए।



आप यूनिक्स सॉकेट प्रमाणीकरण के साथ एक उपयोगकर्ता कैसे बनाते हैं?

जबकि अधिकांश उपयोगकर्ताओं के लिए पासवर्ड प्रमाणीकरण सबसे आम प्रमाणीकरण विधि है, यह एकमात्र विकल्प नहीं है। MySQL कई अलग-अलग आंतरिक और बाहरी प्रमाणीकरण तंत्र प्रदान करता है जिन्हें आप उपयोग करने के लिए अपने उपयोगकर्ता खातों में कॉन्फ़िगर कर सकते हैं। उदाहरण के तौर पर, हम यूनिक्स सॉकेट प्रमाणीकरण का उपयोग करके एक नया खाता कॉन्फ़िगर करेंगे।

यूनिक्स सॉकेट प्रमाणीकरण का उपयोग लिनक्स या यूनिक्स जैसे वातावरण में किया जा सकता है ताकि ऑपरेटिंग सिस्टम पर एक खाते को आगे प्रमाणीकरण के बिना MySQL के भीतर उसी खाते के नाम तक पहुंच प्रदान की जा सके। इस कॉन्फ़िगरेशन में, MySQL व्यवस्थापक जानता है कि ऑपरेटिंग सिस्टम पर उपयोगकर्ता खाते कसकर नियंत्रित होते हैं।

तो अगर कोई mary है ऑपरेटिंग सिस्टम पर उपयोगकर्ता, वे 'mary'@'localhost' में लॉग इन कर सकेंगे MySQL के भीतर खाता यदि यूनिक्स सॉकेट प्रमाणीकरण परिभाषित प्रमाणीकरण तंत्र है। आइए इसे अभी कॉन्फ़िगर करें।

सॉकेट प्रमाणीकरण के लिए auth_socket की आवश्यकता होती है प्लगइन, इसलिए पहले टाइप करके प्लगइन लोड करें:

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

इसके बाद, एक उपयोगकर्ता खाता बनाएं जो आपके ऑपरेटिंग सिस्टम पर मौजूद उपयोगकर्ता खाते से मेल खाता हो। इस उदाहरण के लिए, हम mary . का उपयोग करेंगे खाता हमने ऊपर चर्चा की। यदि आप किसी ऐसे नाम का उपयोग नहीं करते हैं जो आपके किसी ऑपरेटिंग सिस्टम के नाम से मेल खाता हो, तो आप इस उपयोगकर्ता का उपयोग करके प्रमाणित नहीं कर पाएंगे।

सॉकेट प्रमाणीकरण के साथ उपयोगकर्ता बनाने के लिए, हमें IDENTIFIED WITH . का उपयोग करने की आवश्यकता है खंड (IDENTIFIED BY . से भिन्न क्लॉज पहले इस्तेमाल किया गया) उपयोग करने के लिए प्रमाणीकरण प्लगइन निर्दिष्ट करने के लिए:

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

अब, आपको 'mary'@'localhost' . को प्रमाणित करने में सक्षम होना चाहिए MySQL उपयोगकर्ता mary . से आपके ऑपरेटिंग सिस्टम पर उपयोगकर्ता। mary . के रूप में लॉग इन होने पर , कोई उपयोगकर्ता नाम या पासवर्ड प्रदान किए बिना डेटाबेस से कनेक्ट करें:

mysql

आपके द्वारा कॉन्फ़िगर किए गए यूनिक्स सॉकेट प्रमाणीकरण के माध्यम से आपको स्वचालित रूप से साइन इन होना चाहिए।




आप मौजूदा उपयोगकर्ताओं को कैसे दिखाते हैं?

इसके बाद, आइए देखें कि मौजूदा उपयोगकर्ताओं के बारे में जानकारी कैसे प्राप्त करें।

सभी मौजूदा MySQL उपयोगकर्ताओं को दिखाने के लिए, जिसमें उनके उपयोगकर्ता और होस्ट घटक शामिल हैं, साथ ही साथ प्रमाणीकरण प्लगइन जो वे वर्तमान में उपयोग कर रहे हैं, आप SELECT कर सकते हैं mysql.user . से वे फ़ील्ड डेटाबेस:

SELECT user,host,plugin FROM mysql.user
+------------------+-----------+-----------------------+  user             | host      | plugin                |+------------------+-----------+-----------------------+  mary             | localhost | auth_socket           |  mysql.infoschema | localhost | caching_sha2_password |  mysql.session    | localhost | caching_sha2_password |  mysql.sys        | localhost | caching_sha2_password |  root             | localhost | caching_sha2_password |  useradmin        | localhost | caching_sha2_password |+------------------+-----------+-----------------------+6 rows in set (0.00 sec)

यहां, हम देख सकते हैं कि सिस्टम पर छह उपयोगकर्ता परिभाषित हैं, जिनमें से सभी केवल स्थानीय रूप से लॉगिन कर सकते हैं। पांच खाते पासवर्ड प्रमाणीकरण का उपयोग करने के लिए कॉन्फ़िगर किए गए हैं। 'mary'@'localhost' खाता यूनिक्स सॉकेट प्रमाणीकरण का उपयोग करने के लिए कॉन्फ़िगर किया गया है।

हम SHOW CREATE USER . का उपयोग करके उपयोगकर्ता संपत्तियों के बारे में अतिरिक्त जानकारी प्राप्त कर सकते हैं आज्ञा। अपने नाम के बावजूद, यह एक उपयोगकर्ता खाते की सभी मौजूदा संपत्तियों को दिखाता है, जरूरी नहीं कि वे जो प्रारंभिक खाता निर्माण के दौरान उपयोग किए गए थे।

SHOW CREATE USER कमांड एक तर्क के रूप में एक खाता नाम लेता है:

SHOW CREATE USER '<user>'@'<host>'\G

आमतौर पर \G . के साथ कमांड को खत्म करना सबसे अच्छा होता है सामान्य कोलन के बजाय स्टेटमेंट टर्मिनेटर (; ) ताकि आप परिणामों को थोड़ा और स्पष्ट रूप से देख सकें।

'useradmin'@'localhost' . के गुण प्रदर्शित करने के लिए खाता, आप टाइप करेंगे:

SHOW CREATE USER 'useradmin'@'localhost'\G
*************************** 1. row ***************************CREATE USER for useradmin@localhost: CREATE USER 'useradmin'@'localhost' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$O                                              Rl7lM;@Gt{roB4EWchqDdYM142Lq7pfzcCNiK4yUxnRBlrAgr0sE3' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT1 row in set (0.00 sec)


आप मौजूदा MySQL उपयोगकर्ताओं को कैसे बदलते हैं?

आप ALTER USER . का उपयोग करके MySQL में मौजूदा उपयोगकर्ताओं को बदल सकते हैं आज्ञा। इसका उपयोग खाते के अधिकांश उपयोगकर्ता-संबंधित गुणों को बदलने के लिए किया जा सकता है, खाता विशेषाधिकारों के अपवाद के साथ, जो GRANT द्वारा नियंत्रित होते हैं। और REVOKE आदेश।

ALTER USER . के लिए मूल सिंटैक्स ऐसा दिखता है:

ALTER USER <user> <properties_to_change>;

आप MySQL उपयोगकर्ता के लिए पासवर्ड कैसे बदलते हैं?

अधिकांश लोगों के लिए, ALTER USER . का सबसे आम उपयोग पासवर्ड संशोधित करना है।

उदाहरण के लिए, आप 'kamal'@'localhost' . के पासवर्ड को संशोधित कर सकते हैं टाइप करके:

ALTER USER 'kamal'@'localhost' IDENTIFIED BY '<new_password>';

यदि आप किसी उपयोगकर्ता के लिए एक अस्थायी पासवर्ड सेट करना चाहते हैं जिसे उन्हें तुरंत बदलना होगा, तो आप एक ही समय में पासवर्ड सेट और समाप्त कर सकते हैं:

ALTER USER 'kamal'@'localhost' IDENTIFIED BY '<new_password>' PASSWORD EXPIRE;

आप कभी भी अपना पासवर्ड बदल सकते हैं, यहां तक ​​कि CREATE USER . के बिना भी विशेषाधिकार। USER() . का उपयोग करना सबसे आसान है अपने स्वयं के उपयोगकर्ता नाम को स्वचालित रूप से भरने के लिए कार्य करें:

ALTER USER USER() IDENTIFIED BY '<new_password>';


आप MySQL उपयोगकर्ता के लिए प्रमाणीकरण प्लग इन कैसे बदलते हैं?

आप किसी खाते को प्रमाणित करने के लिए उपयोग किए जाने वाले तंत्र या प्लगइन को भी बदल सकते हैं।

पहले के उदाहरण में, हमने 'mary'@'localhost' . नामक खाते को कॉन्फ़िगर किया था यूनिक्स सॉकेट प्रमाणीकरण का उपयोग करने के लिए। यदि हम बाद में उस खाते को पारंपरिक पासवर्ड प्रमाणीकरण का उपयोग करने के लिए बदलना चाहते हैं, तो हम ALTER USER का उपयोग कर सकते हैं फिर से आदेश दें।

सबसे पहले, अपने सर्वर के लिए डिफ़ॉल्ट प्रमाणीकरण प्लगइन की पहचान करें। यदि यह पासवर्ड-आधारित प्रमाणीकरण विधि है, तो संभवतः डिफ़ॉल्ट चयन का पुन:उपयोग करना सबसे अच्छा है:

SHOW VARIABLES LIKE 'default_authentication_plugin';

इस मामले में, डिफ़ॉल्ट प्रमाणीकरण प्लगइन caching_sha2_password है , इसलिए हम इसका उपयोग तब करेंगे जब हम पासवर्ड प्रमाणीकरण पर स्विच करेंगे।

अब, बदलें 'mary'@'localhost' caching_sha2_password . का उपयोग करने के लिए नए पासवर्ड के साथ प्लगइन:

ALTER USER 'mary'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<marys_password>';

'mary'@'localhost' उपयोगकर्ता अब यूनिक्स सॉकेट प्रमाणीकरण का उपयोग करके लॉगिन नहीं कर पाएंगे, लेकिन वे दिए गए पासवर्ड का उपयोग करके लॉग इन कर सकते हैं।




आप MySQL में कैसे लॉगिन करते हैं?

हमने चर्चा की है कि प्रमाणीकरण सहित MySQL उपयोगकर्ता खाते कैसे बनाएं और संशोधित करें। हालांकि, हमने इन प्रमाणीकरण विधियों का उपयोग करके वास्तव में लॉगिन करने के तरीके के बारे में बात नहीं की है।

mysql क्लाइंट एक शक्तिशाली कमांड लाइन क्लाइंट है जिसका उपयोग स्थानीय और दूरस्थ डेटाबेस से कनेक्ट करने के लिए किया जा सकता है। हम इसका उपयोग इस बारे में बात करने के लिए करेंगे कि ऊपर कॉन्फ़िगर की गई विधियों का उपयोग करके कैसे प्रमाणित किया जाए।


आप पासवर्ड के साथ स्थानीय डेटाबेस में कैसे लॉगिन करते हैं?

पासवर्ड के साथ उपयोगकर्ता खाते का उपयोग करके स्थानीय रूप से होस्ट किए गए MySQL डेटाबेस में लॉगिन करने के लिए, मूल सिंटैक्स इस तरह दिखता है:

mysql --user=<username> --password <dbname>

तो, अगर 'kamal'@'localhost' उपयोगकर्ता MySQL में लॉगिन करना चाहता है और testing . से जुड़ना चाहता है कंप्यूटर से डेटाबेस जहां सिस्टम होस्ट किया गया है, वे टाइप कर सकते हैं:

mysql --user=kamal --password testing

mysql क्लाइंट 'kamal'@'localhost' . के लिए पासवर्ड मांगेगा . यदि आप सही क्रेडेंशियल प्रदान करते हैं, तो आप testing . से जुड़े रहेंगे डेटाबेस।

कमांड लाइन पर डेटाबेस निर्दिष्ट करना वैकल्पिक है। यदि कोई निर्दिष्ट नहीं है, तो आप सर्वर से कनेक्ट होंगे लेकिन किसी विशिष्ट डेटाबेस से नहीं।



आप यूनिक्स सॉकेट प्रमाणीकरण के साथ स्थानीय डेटाबेस में कैसे लॉगिन करते हैं?

यूनिक्स सॉकेट प्रमाणीकरण का उपयोग करके स्थानीय MySQL सर्वर में लॉगिन करने के लिए, आपको अपने ऑपरेटिंग सिस्टम में उस खाते के नाम के रूप में लॉग इन करना होगा जो मेल खाता हो। इसलिए, यदि हम 'mary'@'localhost' . को प्रमाणित करना चाहते हैं यूनिक्स सॉकेट प्रमाणीकरण का उपयोग करते हुए, हमें सबसे पहले अपने कंप्यूटर में mary . नामक उपयोगकर्ता नाम के साथ लॉगिन करना होगा ।

एक बार जब आप सही ऑपरेटिंग सिस्टम खाते का उपयोग कर रहे हों, तो आप बिना किसी विकल्प के क्लाइंट को क्रियान्वित करके सीधे स्थानीय डेटाबेस से जुड़ सकते हैं।

mysql

पहले की तरह, आप वैकल्पिक रूप से एक विशिष्ट डेटाबेस से जुड़ने के लिए एक डेटाबेस नाम जोड़ सकते हैं जो आप चाहते हैं।



आप पासवर्ड के साथ किसी दूरस्थ डेटाबेस में कैसे लॉगिन करते हैं?

यदि आपका MySQL सर्वर आपके स्थानीय सर्वर पर नहीं चल रहा है, तो आपको उस होस्ट को निर्दिष्ट करना होगा जिससे क्लाइंट को कनेक्ट करने का प्रयास करना चाहिए। आप --host . जोड़कर ऐसा कर सकते हैं विकल्प।

अधिकांश समय, आप दूरस्थ MySQL सर्वर के पासवर्ड के साथ प्रमाणीकरण करेंगे, इसलिए कमांड कुछ इस तरह दिखाई देगा:

mysql --user=<username> --password --host=<host> <dbname>

तो 'tanya'@'<tanyas_domain>' example.com . पर स्थित एक MySQL सर्वर से कनेक्ट हो सकता है टाइप करके:

mysql --user='tanya' --password --host='example.com' 



आप MySQL उपयोगकर्ताओं को कैसे हटाते हैं?

उपयोगकर्ता खातों को उसके आस-पास रखना अब किसी उद्देश्य की पूर्ति नहीं करता है, यह एक सुरक्षा जोखिम है। आप DROP USER . से खातों को आसानी से हटा सकते हैं आदेश।

मूल सिंटैक्स इस तरह दिखता है:

DROP USER '<user>'@'<host>';

तो 'mary'@'localhost' . को डिलीट करने के लिए उपयोगकर्ता, आप टाइप करेंगे:

DROP USER 'mary'@'localhost';

यदि आप किसी ऐसे उपयोगकर्ता को हटाने का प्रयास करते हैं जो मौजूद नहीं है, तो आपको एक त्रुटि प्राप्त होगी:

ERROR 1396 (HY000): Operation DROP USER failed for 'mary'@'localhost'

इससे बचने के लिए, आप IF EXISTS . जोड़ सकते हैं खाता नाम से पहले खंड। यदि उपयोगकर्ता मौजूद है, तो इसे हटा दिया जाएगा। अगर ऐसा नहीं होता है, तो केवल एक चेतावनी दी जाएगी:

Query OK, 0 rows affected, 1 warning (0.00 sec)


निष्कर्ष

MySQL का उपयोगकर्ता खाता प्रबंधन और प्रमाणीकरण कॉन्फ़िगरेशन अत्यधिक लचीला है। MySQL के भीतर उपयोगकर्ताओं के बारे में जानकारी बनाना, संशोधित करना और प्राप्त करना सीखना आपको अपने डेटाबेस सिस्टम को अधिक प्रभावी ढंग से संचालित करने में मदद करेगा।

सुरक्षा के सर्वोत्तम अभ्यास यह निर्देश देते हैं कि आपको प्रत्येक अद्वितीय उपयोग के मामले के लिए खाते बनाना चाहिए, केवल उनके दायरे को पूरा करने के लिए आवश्यक पहुंच के स्तर को देखते हुए। खाता निर्माण और प्रमाणीकरण इस प्रक्रिया के पहले चरण हैं। एक अन्य गाइड में, हम उस रणनीति के दूसरे हिस्से को पूरा करने के लिए विशेषाधिकार देने और रद्द करने के बारे में बात करेंगे।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस को पोस्टग्रेज़ से MySQL में माइग्रेट करें

  2. MySQL CRC32 () फ़ंक्शन – उदाहरण

  3. त्रुटि कोड:2013। क्वेरी के दौरान MySQL सर्वर से कनेक्शन टूट गया

  4. CentOS 6 . पर MySQL कैसे स्थापित करें

  5. MySQL में यूनिकोड कैसे स्टोर करें?