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

MySQL में भूमिकाओं के साथ विशेषाधिकार कैसे प्रबंधित करें


परिचय

अभिगम नियंत्रण और उपयोगकर्ता प्रबंधन दो ऐसे क्षेत्र हैं जो आपके सिस्टम के भीतर उपयोगकर्ताओं और विभिन्न डेटाबेस संस्थाओं की संख्या बढ़ने के साथ-साथ तेजी से जटिल हो सकते हैं। विभिन्न डेटाबेस ऑब्जेक्ट्स पर कई अलग-अलग विशेषाधिकारों को प्रबंधित करना, यह सुनिश्चित करना कि समान जिम्मेदारियां रखने वाले उपयोगकर्ताओं की पहुंच का स्तर समान है, और ऑडिटिंग और एक्सेस को सीमित करना समय के साथ और अधिक कठिन हो जाता है।

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


Commands

यहाँ प्राथमिक SQL कमांड हैं जिन पर हम MySQL भूमिकाओं के प्रबंधन के संबंध में चर्चा करेंगे।

  • CREATE ROLE :CREATE ROLE कमांड डेटाबेस सिस्टम के भीतर एक नई भूमिका को परिभाषित करता है।
  • DROP ROLE :DROP ROLE कमांड इसके विपरीत करता है, मौजूदा भूमिका को हटाता है।
  • GRANT :GRANT भूमिकाओं से संबंधित कमांड के दो अलग-अलग उद्देश्य हैं:भूमिकाओं में विशेषाधिकार जोड़ना और उपयोगकर्ता खातों को भूमिकाओं के सदस्यों के रूप में जोड़ना।
  • REVOKE :भूमिकाओं के संदर्भ में, REVOKE कमांड भूमिका से विशेषाधिकार हटाता है और उपयोगकर्ता खातों से भूमिका सदस्यता भी हटाता है।
  • SHOW GRANTS :SHOW GRANTS कमांड दिए गए उपयोगकर्ता खाते या भूमिका के विशेषाधिकार दिखाता है।
  • SET ROLE :SET ROLE कमांड उन भूमिकाओं को बदलता है जिनका उपयोगकर्ता खाता सक्रिय रूप से उपयोग कर रहा है। यह आपको यह निर्धारित करने की अनुमति देता है कि सत्र के लिए खाते पर अनुमतियों के कौन से सेट लागू होते हैं।
  • SET DEFAULT ROLE :SET DEFAULT ROLE कमांड उन भूमिकाओं को परिभाषित करता है जो क्लाइंट द्वारा विशिष्ट उपयोगकर्ता खाते के रूप में लॉग इन करने पर स्वचालित रूप से लागू होती हैं।


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

इस गाइड का पालन करने के लिए, आपको निम्नलिखित विशेषाधिकारों की आवश्यकता होगी:

  • CREATE ROLE
  • GRANT OPTION
  • CREATE USER (दूसरे उपयोगकर्ता के लिए डिफ़ॉल्ट भूमिकाएं सेट करने के लिए)
  • ROLE_ADMIN (सिस्टम वेरिएबल सेट करने के लिए जो भूमिका व्यवहार को संशोधित करते हैं)
  • SYSTEM_VARIABLES_ADMIN (सिस्टम वेरिएबल सेट करने के लिए जो भूमिका व्यवहार को संशोधित करते हैं)

CREATE ROLE विशेषाधिकार CREATE USER . का एक छोटा संस्करण है विशेषाधिकार, आपको भूमिकाएँ बनाने और प्रबंधित करने की अनुमति देता है। ऐसे खाते जिनके पास पहले से CREATE USER . है विशेषाधिकार स्वचालित रूप से भूमिकाओं को प्रबंधित करने के लिए आवश्यक सभी कार्यक्षमता रखता है।

GRANT OPTION किसी भूमिका के लिए विशेषाधिकार निर्दिष्ट करने के लिए विशेषाधिकार की आवश्यकता होती है। आपके पास GRANT OPTION होना चाहिए उन विशेषाधिकारों के लिए सक्षम जिन्हें आप किसी भूमिका को असाइन करना चाहते हैं।




भूमिकाएं क्या हैं?

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

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

एक्सेस स्तर निर्दिष्ट करते समय इसका स्पष्ट लाभ होता है, क्योंकि developer . असाइन करना आसान होता है , sysadmin , या financeteam दर्जनों विशेषाधिकारों को व्यक्तिगत रूप से प्रबंधित करने के बजाय उपयोगकर्ता की भूमिका। यह एक साथ कई खातों तक पहुंच को त्वरित करने की सुविधा भी देता है। यदि आप बिक्री टीम के लिए एक नया डेटाबेस बनाते हैं, तो आप salesteam . दे सकते हैं हर उस खाते को ट्रैक करने के बजाय, जिसकी पहुंच होनी चाहिए।



भूमिकाएं बनाना

यदि आपके पास CREATE ROLE . वाला खाता है विशेषाधिकार, आप CREATE ROLE . का उपयोग करके भूमिकाओं का प्रबंधन कर सकते हैं आदेश।


भूमिकाओं के लिए MySQL का सिंटैक्स क्या है?

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

भूमिकाएं निम्न प्रारूप का पालन करती हैं:

'<role>'@'<host>'

उपयोगकर्ताओं की तरह, भूमिकाओं के दो घटक होते हैं:भूमिका का नाम और होस्ट जिससे क्लाइंट कनेक्ट हो रहा है। हालाँकि, MySQL इन घटकों की व्याख्या करने का तरीका अलग है।

भूमिकाओं के साथ, '<role>' नाम का हिस्सा कभी खाली नहीं हो सकता। भूमिका की "गुमनाम" होने की कोई अवधारणा नहीं है जैसा कि उपयोगकर्ताओं के साथ है। दूसरी ओर, '<host>' . को छोड़ कर भाग है अभी भी अनुमति है, और MySQL % का उपयोग करेगा मेजबान के रूप में। हालांकि, % इस संदर्भ में एक शाब्दिक चरित्र के रूप में व्याख्या की जाती है, न कि वाइल्डकार्ड के रूप में।

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

इन नियमों के कारण, कई मामलों में, व्यवस्थापक केवल '<role>' का उपयोग करके भूमिकाओं को परिभाषित करना चुनते हैं। अवयव। यह MySQL को एक शाब्दिक % substitute को प्रतिस्थापित करने का कारण बनता है '<host>' . के लिए वर्ण घटक, प्रभावी रूप से नाम के उस हिस्से को अदृश्य और अप्रासंगिक बना देता है। यदि आप किसी उपयोगकर्ता खाते और भूमिका दोनों के रूप में किसी नाम का उपयोग करने का इरादा नहीं रखते हैं, तो आप ऐसा कर सकते हैं।



आप भूमिकाएं कैसे बनाते हैं?

नई भूमिकाएँ बनाने के लिए, CREATE ROLE . का उपयोग करें आदेश।

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

CREATE ROLE '<role>'@'<host>';

आप प्रत्येक भूमिका नाम को अल्पविराम से अलग करके एक ही समय में कई भूमिकाएँ भी बना सकते हैं:

CREATE ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';

यदि आपके द्वारा निर्दिष्ट कोई भी भूमिका सिस्टम पर पहले से मौजूद है, तो कमांड एक त्रुटि के साथ विफल हो जाएगी।

इससे बचने के लिए और MySQL को केवल एक चेतावनी जारी करने के लिए, आप IF NOT EXISTS . शामिल कर सकते हैं CREATE ROLE . के बाद क्लॉज भूमिका के नाम से पहले कमांड:

CREATE ROLE IF NOT EXISTS '<role>'@'<host>';

जैसा कि ऊपर बताया गया है, कई बार व्यवस्थापक '<host>' . को छोड़ देते हैं सादगी के लिए भूमिका के नाम का हिस्सा, परोक्ष रूप से इसे शाब्दिक % . पर सेट करना चरित्र। तो व्यवहार में, आपके कई भूमिका निर्माण आदेश इस तरह दिख सकते हैं:

CREATE ROLE '<role>';



आप किसी भूमिका को विशेषाधिकार कैसे देते हैं?

नई भूमिकाएँ बनाने के बाद, आपकी अगली प्राथमिकता आम तौर पर उन्हें विशेषाधिकार प्रदान करके उन्हें सार्थक बनाना है।

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

GRANT <privileges> ON <database>.<object> TO '<role>'@'<host>';

उदाहरण के लिए, SELECT देने के लिए readapp . नामक भूमिका के लिए विशेषाधिकार appdb . पर डेटाबेस और इसमें शामिल सभी ऑब्जेक्ट, आप टाइप कर सकते हैं:

GRANT SELECT ON appdb.* TO 'readapp';

इसी तरह, आप उसी डेटाबेस को writeapp . नामक भूमिका के लिए लेखन विशेषाधिकार प्रदान कर सकते हैं टाइप करके:

GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'writeapp';

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



आप उपयोगकर्ताओं को किसी भूमिका के लिए सदस्यता कैसे प्रदान करते हैं?

एक बार जब आप अपनी भूमिकाओं में विशेषाधिकार जोड़ लेते हैं, तो आप सदस्यों को संबंधित विशेषाधिकार प्रदान करने के लिए भूमिका में जोड़ना शुरू कर सकते हैं।

ऐसा करने के लिए, MySQL उसी GRANT . के एक अलग रूप का उपयोग करता है हम उपयोगकर्ताओं और भूमिकाओं को विशेषाधिकार प्रदान करने के लिए उपयोग करते हैं। हालाँकि, यह नया फ़ॉर्म उपयोगकर्ता के लिए भूमिकाएँ जोड़ता है, जिससे उपयोगकर्ता खाते को भूमिका के लिए दिए गए सभी विशेषाधिकारों तक पहुँच की अनुमति मिलती है।

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

GRANT '<role>'@'<host>' TO '<user>'@'<host>';

उदाहरण के लिए, यदि 'reports'@'localhost' उपयोगकर्ता को appdb . से डेटा पढ़ने में सक्षम होना चाहिए रिपोर्ट जनरेट करने के लिए डेटाबेस, हम readapp . जोड़ सकते हैं उपयोगकर्ता खाते की भूमिका, इसे चुनिंदा विशेषाधिकार देते हुए:

GRANT 'readapp' TO 'reports'@'localhost';

इसी तरह 'appuser'@'localhost' . देने के लिए एक ही डेटाबेस में डेटा को प्रबंधित करने की क्षमता, हम उस उपयोगकर्ता को writeapp का सदस्य बना सकते हैं भूमिका:

GRANT 'writeapp' TO 'appuser'@'localhost';

'appuser'@'localhost' खाते में अब डेटाबेस से डेटा डालने, अपडेट करने और निकालने की क्षमता होगी। अगर writeapp में नए विशेषाधिकार जोड़े जाते हैं भूमिका, 'appuser'@'localhost' खाता तुरंत उन विशेषाधिकारों को प्राप्त कर लेगा।


आप प्रत्येक उपयोगकर्ता को स्वचालित रूप से कुछ भूमिकाएं कैसे प्रदान करते हैं?

कभी-कभी ऐसी भूमिकाएँ हो सकती हैं, जिन्हें आप चाहते हैं कि आपके सिस्टम के प्रत्येक उपयोगकर्ता की पहुँच हो। mandatory_roles . सेट करके आप यह निर्धारित कर सकते हैं कि प्रत्येक खाते को कौन सी भूमिकाएं स्वचालित रूप से प्रदान की जाती हैं चर।

mandatory_roles को संशोधित करने के लिए चर, आपके उपयोगकर्ता के पास ROLE_ADMIN होना चाहिए और SYSTEM_VARIABLES_ADMIN विशेषाधिकार आप टाइप करके वह भूमिकाएँ निर्धारित कर सकते हैं जो आप प्रत्येक उपयोगकर्ता को देना चाहते हैं:

SET PERSIST mandatory_roles = '`<role_1>`@`<host>`, `<role_2>`@`<host>`, `<role_3>`@`<host>`';

यहां, हम सिस्टम पर प्रत्येक उपयोगकर्ता को स्वचालित रूप से तीन भूमिकाएं देते हैं। सिस्टम वैरिएबल सेट करते समय, mandatory_roles . का मान एक स्ट्रिंग होना चाहिए, इसलिए हम पूरी भूमिका सूची को एकल उद्धरणों में समाहित करते हैं और अलग-अलग भूमिका घटकों को उद्धृत करने के लिए बैकटिक्स का उपयोग करते हैं।

आप mandatory_roles . में कोई भूमिका नहीं जोड़ सकते सूची जिसमें SYSTEM_USER है विशेषाधिकार। यह सुनिश्चित करने के लिए एक सुरक्षा उपाय है कि सिस्टम पर सभी सत्र स्वचालित रूप से सिस्टम सत्र नहीं हैं।




आप भूमिकाओं से विशेषाधिकारों का उपयोग कैसे करते हैं?

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


वर्तमान सक्रिय भूमिकाएं देखना

नई भूमिकाएँ सक्रिय करने से पहले, आप जाँच सकते हैं कि आपके उपयोगकर्ता सत्र के लिए वर्तमान में कौन सी भूमिकाएँ सक्रिय हैं।

अपने सत्र के लिए सक्रिय भूमिकाएँ देखने के लिए, टाइप करें:

SELECT CURRENT_ROLE()

आउटपुट शून्य या अधिक भूमिकाएँ प्रदर्शित करेगा जो आपके वर्तमान सत्र में सक्रिय हैं। उन भूमिकाओं से जुड़े विशेषाधिकार आपके द्वारा किए जाने वाले कार्यों में जोड़ देंगे।



सत्र के लिए भूमिकाएं कैसे सक्रिय करें

यह बदलने के लिए कि आपके सत्र के दौरान कौन सी भूमिकाएँ सक्रिय हैं, SET ROLE . का उपयोग करें आज्ञा। आप इस कमांड को कई अलग-अलग तरीकों से इस्तेमाल कर सकते हैं।

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

SET ROLE '<rolename>'@'<host>';

यह विचाराधीन भूमिका को सक्रिय करेगा। यह ध्यान रखना महत्वपूर्ण है कि किसी भी पूर्व सक्रिय भूमिका का उल्लेख SET ROLE . में नहीं किया गया है आदेश अब निष्क्रिय कर दिया जाएगा।

एक समय में एक से अधिक भूमिकाएँ सक्रिय करने के लिए, प्रत्येक भूमिका को अल्पविराम से अलग करें:

SET ROLE '<role_1>'@'<host>', '<role_2>'@'<host>', '<role_3>'@'<host>';

आपके खाते को दी गई सभी भूमिकाओं को सक्रिय करने के लिए, आप ALL . निर्दिष्ट कर सकते हैं विशिष्ट भूमिका के बजाय:

SET ROLE ALL;

आप MySQL को ALL EXCEPT . का उपयोग करके विशिष्ट अपवाद के साथ अपनी सभी भूमिकाओं को सक्रिय करने के लिए भी कह सकते हैं :

SET ROLL ALL EXCEPT '<role_1>'@'<host>';

दूसरा विकल्प NONE . निर्दिष्ट करके अपने खाते की सभी भूमिकाओं को अक्षम करना है :

SET ROLE NONE

यह सत्र के लिए आपकी सभी उपयोगकर्ता भूमिकाओं को निष्क्रिय कर देगा, आपको केवल विशेष रूप से आपके उपयोगकर्ता खाते को निर्दिष्ट विशेषाधिकार प्रदान करेगा।

अपने खाते के लिए निर्धारित भूमिकाओं की डिफ़ॉल्ट सूची पर वापस जाने के लिए, DEFAULT . का उपयोग करें कीवर्ड:

SET ROLE DEFAULT


उपयोगकर्ता खाते के लिए डिफ़ॉल्ट भूमिकाएं कैसे परिभाषित करें

जब आप उपयोगकर्ता के रूप में लॉग इन करते हैं तो स्वचालित रूप से सक्रिय हो जाती हैं और वे भूमिकाएं जो आपके द्वारा SET ROLE DEFAULT का उपयोग करने पर पुन:सक्रिय हो जाती हैं। विन्यास योग्य हैं।

डिफ़ॉल्ट रूप से सक्रिय की जाने वाली भूमिकाओं को परिभाषित करने के लिए, SET DEFAULT ROLE . का उपयोग करें आप SET ROLE . के समान कमांड का उपयोग करते हैं आदेश:

SET DEFAULT ROLE '<role_1>'@'<host>';

यह डिफ़ॉल्ट भूमिकाएं सेट करेगा जो लॉगिन पर या SET ROLE DEFAULT का उपयोग करने पर आपके अपने खाते के लिए सक्रिय हो जाएंगी। ।

यदि आपके उपयोगकर्ता के पास CREATE USER . है विशेषाधिकार, आप अन्य खातों के लिए डिफ़ॉल्ट भूमिकाएँ सेट कर सकते हैं:

SET DEFAULT ROLE ALL TO '<user>'@'<host>';

यहां, हम निर्दिष्ट करते हैं कि '<user>'@'<host>' प्रमाणीकरण पर खाते को अपनी सभी भूमिकाओं को स्वचालित रूप से सक्रिय कर देना चाहिए।

इस सिंटैक्स का उपयोग प्रत्येक उपयोगकर्ता को अल्पविराम से अलग करके एक से अधिक खातों के लिए डिफ़ॉल्ट भूमिकाओं को परिभाषित करने के लिए भी किया जा सकता है:

SET DEFAULT ROLE ALL TO '<user_1>'@'<host>', '<user_2>'@'<host>';


डिफ़ॉल्ट रूप से सभी उपयोगकर्ताओं के लिए सभी भूमिकाओं को सक्रिय करना

यदि आप चाहते हैं कि आपके MySQL सर्वर का प्रत्येक खाता डिफ़ॉल्ट रूप से अपनी सभी भूमिकाओं को सक्रिय करे, तो आप ऐसा करने के लिए सिस्टम सेटिंग बदल सकते हैं।

जब activate_all_roles_on_login वेरिएबल सत्य पर सेट है, MySQL लॉग इन करने पर किसी खाते से जुड़ी सभी भूमिकाओं को स्वचालित रूप से सक्रिय कर देगा। यह SET DEFAULT ROLE द्वारा निर्दिष्ट सेटिंग्स को हटा देता है ।

इस सुविधा को सक्षम करने के लिए, आपके पास SYSTEM_VARIABLES_ADMIN . होना चाहिए और ROLE_ADMIN विशेषाधिकार टाइप करके सुविधा को सक्षम करें:

SET PERSIST activate_all_roles_on_login = ON;

इससे उपयोगकर्ता खाते लॉगिन पर सभी भूमिकाओं को स्वचालित रूप से सक्रिय कर देंगे। हालांकि, SET ROLE DEFAULT अभी भी आपको किसी खाते से संबद्ध केवल डिफ़ॉल्ट भूमिकाओं को सक्रिय करने की अनुमति देगा।




भूमिकाओं से प्राप्त मौजूदा विशेषाधिकार दिखाएं

यह समझने के लिए कि आपके खाते में कौन से विशेषाधिकार उपलब्ध हैं, आप SHOW GRANTS . का उपयोग कर सकते हैं आदेश।

किसी उपयोगकर्ता के लिए सक्षम अनुदानों की जाँच करने के लिए, टाइप करें:

SHOW GRANTS FOR '<user>'@'<host>';

आउटपुट आपको सीधे उपयोगकर्ता खाते को सौंपे गए सभी विशेषाधिकारों के साथ-साथ उन सभी भूमिकाओं को दिखाएगा जिनका उपयोगकर्ता सदस्य है।

यह जानने के बाद कि कोई खाता किस भूमिका का सदस्य है, आप टाइप करके यह जांच सकते हैं कि भूमिकाएं उपयोगकर्ता को कौन से विशेषाधिकार प्रदान करती हैं:

SHOW GRANTS FOR '<user>'@'<host>' USING '<role>'@'<host>';

उदाहरण के लिए, 'reports'@'localhost' . के विशेषाधिकारों की जांच करने के लिए उपयोगकर्ता, readapp . में इसकी सदस्यता द्वारा प्रदान किए गए लोगों सहित भूमिका, आप उपयोग कर सकते हैं:

SHOW GRANTS FOR 'reports'@'localhost' USING 'readapp';

यह आपको उन सभी विशेषाधिकारों को दिखाएगा जो स्पष्ट रूप से 'reports'@'localhost' को दिए गए हैं। उपयोगकर्ता खाते के साथ-साथ readapp . द्वारा जोड़े गए खाते भूमिका।



किसी उपयोगकर्ता की भूमिका को निरस्त करना

तो क्या होता है जब आप किसी उपयोगकर्ता से भूमिका हटाना चाहते हैं? GRANT . के समान कमांड या तो उपयोगकर्ता या भूमिका में नए विशेषाधिकार जोड़ सकता है या उपयोगकर्ता में भूमिकाएं जोड़ सकता है, REVOKE कमांड उपयोगकर्ता या भूमिका से विशेषाधिकार हटा सकता है और उपयोगकर्ता से भूमिका सदस्यता भी हटा सकता है।

किसी उपयोगकर्ता खाते से किसी भूमिका को हटाने के लिए उपयोग किया जाने वाला मूल सिंटैक्स इस तरह दिखता है:

REVOKE '<role>' FROM '<user>'@'<host>';

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

उदाहरण के तौर पर, हम writeapp . को निरस्त कर सकते हैं 'appuser'@'localhost' . से भूमिका टाइप करके उपयोगकर्ता खाता:

REVOKE 'writeapp' FROM 'appuser'@'localhost';

यदि उपयोगकर्ता को अन्य माध्यमों से एक विशेषाधिकार प्रदान किया गया है, हालांकि (या तो सीधे तौर पर प्रदान किया गया है या एक अलग भूमिका के साथ सदस्यता के माध्यम से दिया गया है) तब भी उनके पास उस विशेषाधिकार तक पहुंच होगी। तो अगर 'appuser'@'localhost' उपयोगकर्ता readapp . का भी सदस्य था जो भूमिका हमने पहले दी थी, उनके पास अभी भी SELECT होगा appdb . पर विशेषाधिकार डेटाबेस।



निष्कर्ष

अपने 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. php / Mysql सर्वश्रेष्ठ वृक्ष संरचना

  2. mysql_fetch_array ()/mysql_fetch_assoc ()/mysql_fetch_row ()/mysql_num_rows आदि... पैरामीटर 1 को संसाधन होने की अपेक्षा करता है

  3. UUID को नंबर के रूप में कैसे स्टोर करें?

  4. मैं एक .NET MySqlCommand में एक MySQL उपयोगकर्ता परिभाषित चर का उपयोग कैसे कर सकता हूं?

  5. MySQL डायनेमिक-पिवट