डेटा कंट्रोल लैंग्वेज स्ट्रक्चर्ड क्वेरी लैंग्वेज का एक सबसेट है। डेटाबेस एडमिनिस्ट्रेटर रिलेशनल डेटाबेस में सुरक्षा पहुंच को कॉन्फ़िगर करने के लिए DCL का उपयोग करते हैं। यह डेटा डेफिनिशन लैंग्वेज का पूरक है, जो डेटाबेस ऑब्जेक्ट जोड़ता और हटाता है, और डेटा मैनिपुलेशन लैंग्वेज, जो डेटाबेस की सामग्री को पुनर्प्राप्त, सम्मिलित, और संशोधित करता है।
DCL SQL सबसेट में सबसे सरल है, क्योंकि इसमें केवल तीन कमांड होते हैं: GRANT, REVOKE, और DENY। संयुक्त रूप से, ये तीन कमांड एडमिनिस्ट्रेटर को डेटाबेस अनुमतियों को विस्तृत तरीके से सेट और हटाने के लिए लचीलापन प्रदान करते हैं।
GRANT कमांड के साथ अनुमतियां जोड़ना
GRANT कमांड एक डेटाबेस उपयोगकर्ता को नई अनुमतियां जोड़ता है। इसका एक बहुत ही सरल सिंटैक्स है, जिसे निम्नानुसार परिभाषित किया गया है:
GRANT [privilege] ON [object] TO [user] [WITH GRANT OPTION]
यहां इस कमांड के साथ आपूर्ति किए जा सकने वाले प्रत्येक पैरामीटर का विवरण दिया गया है:
- विशेषाधिकार — या तो कीवर्ड ALL (विभिन्न प्रकार की अनुमतियां देने के लिए) या एक विशिष्ट डेटाबेस अनुमति या अनुमतियों का सेट हो सकता है। उदाहरणों में CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE, और CREATE VIEW शामिल हैं।
- ऑब्जेक्ट — कोई भी डेटाबेस ऑब्जेक्ट हो सकता है। वैध विशेषाधिकार विकल्प आपके द्वारा इस क्लॉज में शामिल डेटाबेस ऑब्जेक्ट के प्रकार के आधार पर भिन्न होते हैं। आमतौर पर, ऑब्जेक्ट या तो एक डेटाबेस, फ़ंक्शन, स्टोर्ड प्रोसीजर, टेबल, या व्यू होगा।
- उपयोगकर्ता — कोई भी डेटाबेस उपयोगकर्ता हो सकता है। यदि आप भूमिका-आधारित डेटाबेस सुरक्षा का उपयोग करना चाहते हैं तो आप इस क्लॉज में उपयोगकर्ता के लिए एक भूमिका भी प्रतिस्थापित कर सकते हैं।
- यदि आप GRANT कमांड के अंत में वैकल्पिक WITH GRANT OPTION क्लॉज शामिल करते हैं, तो आप न केवल SQL स्टेटमेंट में परिभाषित अनुमतियों के साथ निर्दिष्ट उपयोगकर्ता को अनुमति देते हैं, बल्कि उपयोगकर्ता को अन्य डेटाबेस उपयोगकर्ताओं को उन समान अनुमतियों को आगे देने की अनुमति भी देते हैं। इस कारण से, इस क्लॉज का उपयोग सावधानी से करें।
उदाहरण के लिए, मान लें कि आप उपयोगकर्ता जो को HR नामक डेटाबेस में कर्मचारी टेबल से जानकारी पुनर्प्राप्त करने की क्षमता देना चाहते हैं। निम्न SQL कमांड का उपयोग करें:
GRANT SELECT ON HR.employees TO Joe
जो कर्मचारियों की टेबल से जानकारी पुनर्प्राप्त कर सकता है। हालांकि, वह अन्य उपयोगकर्ताओं को उस टेबल से जानकारी पुनर्प्राप्त करने की अनुमति देने में सक्षम नहीं होगा क्योंकि DCL स्क्रिप्ट में WITH GRANT OPTION क्लॉज शामिल नहीं था।
डेटाबेस एक्सेस रद्द करना
REVOKE कमांड किसी उपयोगकर्ता से पहले दी गई डेटाबेस एक्सेस को हटा देता है। इस कमांड के लिए सिंटैक्स निम्नानुसार परिभाषित किया गया है:
REVOKE [GRANT OPTION FOR] [permission] ON [object] FROM [user] [CASCADE]
REVOKE कमांड के पैरामीटर्स पर यहां विवरण दिया गया है:
- अनुमति — पहचाने गए उपयोगकर्ता से हटाने के लिए डेटाबेस अनुमतियों को निर्दिष्ट करता है। कमांड पहचाने गए अनुमति के लिए पहले किए गए GRANT और DENY दोनों दावों को रद्द कर देता है।
- ऑब्जेक्ट — कोई भी डेटाबेस ऑब्जेक्ट हो सकता है। वैध विशेषाधिकार विकल्प आपके द्वारा इस क्लॉज में शामिल डेटाबेस ऑब्जेक्ट के प्रकार के आधार पर भिन्न होते हैं। आमतौर पर, ऑब्जेक्ट या तो एक डेटाबेस, फ़ंक्शन, स्टोर्ड प्रोसीजर, टेबल, या व्यू होगा।
- उपयोगकर्ता — कोई भी डेटाबेस उपयोगकर्ता हो सकता है। यदि आप भूमिका-आधारित डेटाबेस सुरक्षा का उपयोग करना चाहते हैं तो आप इस क्लॉज में उपयोगकर्ता के लिए एक भूमिका भी प्रतिस्थापित कर सकते हैं।
- GRANT OPTION FOR क्लॉज निर्दिष्ट उपयोगकर्ता की निर्दिष्ट अनुमति को अन्य उपयोगकर्ताओं को देने की क्षमता को हटा देता है। यदि आप REVOKE स्टेटमेंट में GRANT OPTION FOR क्लॉज शामिल करते हैं, तो प्राथमिक अनुमति रद्द नहीं की जाती है। यह क्लॉज केवल देने की क्षमता को रद्द करता है।
- CASCADE विकल्प उन उपयोगकर्ताओं से भी निर्दिष्ट अनुमति को रद्द कर देता है जिन्हें निर्दिष्ट उपयोगकर्ता ने अनुमति दी थी।
निम्न कमांड पिछले उदाहरण में जो को दी गई अनुमति को रद्द कर देता है:
REVOKE SELECT ON HR.employees FROM Joe
स्पष्ट रूप से डेटाबेस एक्सेस अस्वीकार करना
DENY कमांड किसी उपयोगकर्ता को विशेष अनुमति प्राप्त करने से स्पष्ट रूप से रोकता है। यह सुविधा तब उपयोगी होती है जब कोई उपयोगकर्ता किसी भूमिका या समूह का सदस्य होता है जिसे एक अनुमति दी जाती है, और आप उस व्यक्तिगत उपयोगकर्ता को एक अपवाद बनाकर उस अनुमति को विरासत में लेने से रोकना चाहते हैं। इस कमांड के लिए सिंटैक्स निम्नानुसार है:
DENY [permission] ON [object] TO [user]
DENY कमांड के पैरामीटर GRANT कमांड के लिए उपयोग किए गए पैरामीटर के समान हैं। उदाहरण के लिए, यदि आप यह सुनिश्चित करना चाहते हैं कि मैथ्यू को कभी भी कर्मचारियों की टेबल से जानकारी हटाने की क्षमता प्राप्त न हो, तो निम्न कमांड जारी करें:
DENY DELETE ON HR.employees TO Matthew