डेटा नियंत्रण भाषा संरचित क्वेरी भाषा का एक सबसेट है। डेटाबेस व्यवस्थापक DCL का उपयोग रिलेशनल डेटाबेस तक सुरक्षा पहुँच को कॉन्फ़िगर करने के लिए करते हैं। यह डेटा परिभाषा भाषा . का पूरक है , जो डेटाबेस ऑब्जेक्ट्स को जोड़ता और हटाता है, और डेटा मैनिपुलेशन लैंग्वेज, जो डेटाबेस की सामग्री को पुनः प्राप्त, सम्मिलित और संशोधित करता है।
DCL SQL उपसमुच्चय में सबसे सरल है, क्योंकि इसमें केवल तीन कमांड होते हैं:GRANT, REVOKE, और DENY। संयुक्त रूप से, ये तीन आदेश प्रशासकों को बारीक ढंग से डेटाबेस अनुमतियों को सेट करने और हटाने के लिए लचीलापन प्रदान करते हैं।
GRANT कमांड के साथ अनुमतियाँ जोड़ना
GRANT कमांड डेटाबेस उपयोगकर्ता के लिए नई अनुमतियाँ जोड़ता है। इसका एक बहुत ही सरल सिंटैक्स है, जिसे निम्नानुसार परिभाषित किया गया है:
GRANT [privilege]
ON [object]
TO [user]
[WITH GRANT OPTION]
यहां प्रत्येक पैरामीटर पर विस्तृत जानकारी दी गई है जिसे आप इस आदेश के साथ आपूर्ति कर सकते हैं:
- विशेषाधिकार - या तो कीवर्ड ALL (विभिन्न प्रकार की अनुमतियां देने के लिए) या एक विशिष्ट डेटाबेस अनुमति या अनुमतियों का सेट हो सकता है। उदाहरणों में डेटाबेस बनाना, चयन करना, सम्मिलित करना, अद्यतन करना, हटाना, निष्पादित करना और दृश्य बनाना शामिल हैं।
- वस्तु - कोई भी डेटाबेस ऑब्जेक्ट हो सकता है। इस क्लॉज में आपके द्वारा शामिल किए गए डेटाबेस ऑब्जेक्ट के प्रकार के आधार पर वैध विशेषाधिकार विकल्प भिन्न होते हैं। आमतौर पर, ऑब्जेक्ट या तो डेटाबेस, फ़ंक्शन, संग्रहीत कार्यविधि, तालिका या दृश्य होगा।
- उपयोगकर्ता - कोई भी डेटाबेस उपयोगकर्ता हो सकता है। यदि आप भूमिका-आधारित डेटाबेस सुरक्षा का उपयोग करना चाहते हैं, तो आप इस खंड में उपयोगकर्ता के लिए एक भूमिका भी बदल सकते हैं।
- यदि आप वैकल्पिक अनुदान विकल्प के साथ . शामिल करते हैं GRANT कमांड के अंत में क्लॉज, आप निर्दिष्ट उपयोगकर्ता को न केवल 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 दोनों दावों को रद्द कर देता है।
- वस्तु - कोई भी डेटाबेस ऑब्जेक्ट हो सकता है। इस क्लॉज में आपके द्वारा शामिल किए गए डेटाबेस ऑब्जेक्ट के प्रकार के आधार पर वैध विशेषाधिकार विकल्प भिन्न होते हैं। आमतौर पर, ऑब्जेक्ट या तो डेटाबेस, फ़ंक्शन, संग्रहीत कार्यविधि, तालिका या दृश्य होगा।
- उपयोगकर्ता - कोई भी डेटाबेस उपयोगकर्ता हो सकता है। यदि आप भूमिका-आधारित डेटाबेस सुरक्षा का उपयोग करना चाहते हैं, तो आप इस खंड में उपयोगकर्ता के लिए एक भूमिका भी बदल सकते हैं।
- के लिए अनुदान विकल्प खंड अन्य उपयोगकर्ताओं को निर्दिष्ट अनुमति देने के लिए निर्दिष्ट उपयोगकर्ता की क्षमता को हटा देता है। यदि आप के लिए अनुदान विकल्प . शामिल करते हैं REVOKE कथन में खंड, प्राथमिक अनुमति निरस्त नहीं की जाती है। यह खंड केवल देने की क्षमता को निरस्त करता है।
- द कैस्केड विकल्प किसी भी उपयोगकर्ता से निर्दिष्ट अनुमति को भी रद्द कर देता है जिसे निर्दिष्ट उपयोगकर्ता ने अनुमति दी थी।
निम्न आदेश पिछले उदाहरण में जो को दी गई अनुमति को निरस्त करता है:
REVOKE SELECT
ON HR.employees
FROM Joe
स्पष्ट रूप से डेटाबेस एक्सेस को अस्वीकार करना
DENY कमांड स्पष्ट रूप से उपयोगकर्ता को एक विशेष अनुमति प्राप्त करने से रोकता है। यह सुविधा तब सहायक होती है जब कोई उपयोगकर्ता किसी भूमिका या समूह का सदस्य होता है जिसे अनुमति दी जाती है, और आप अपवाद बनाकर उस व्यक्तिगत उपयोगकर्ता को अनुमति प्राप्त करने से रोकना चाहते हैं। इस कमांड का सिंटैक्स इस प्रकार है:
DENY [permission]
ON [object]
TO [user]
DENY कमांड के पैरामीटर GRANT कमांड के लिए उपयोग किए जाने वाले समान हैं। उदाहरण के लिए, यदि आप यह सुनिश्चित करना चाहते हैं कि मैथ्यू को कभी भी कर्मचारियों की तालिका से जानकारी को हटाने की क्षमता प्राप्त नहीं होगी, तो निम्न आदेश जारी करें:
DENY DELETE
ON HR.employees
TO Matthew