डेटाबेस अनुमतियों के लिए डेटा नियंत्रण भाषा (डीसीएल)

NS डेटा नियंत्रण भाषा संरचित क्वेरी भाषा का एक सबसेट है। डेटाबेस व्यवस्थापक DCL का उपयोग रिलेशनल डेटाबेस तक सुरक्षा पहुँच को कॉन्फ़िगर करने के लिए करते हैं। यह पूरक करता है डेटा परिभाषा भाषा, जो डेटाबेस ऑब्जेक्ट्स को जोड़ता और हटाता है, और डेटा हेरफेर भाषा, जो डेटाबेस की सामग्री को पुनः प्राप्त, सम्मिलित और संशोधित करता है।

DCL SQL उपसमुच्चयों में सबसे सरल है, क्योंकि इसमें केवल तीन कमांड होते हैं: GRANT, REVOKE, और DENY। संयुक्त रूप से, ये तीन आदेश प्रशासकों को बारीक फैशन में डेटाबेस अनुमतियों को सेट करने और हटाने के लिए लचीलापन प्रदान करते हैं।

अनुदान आदेश के साथ अनुमतियाँ जोड़ना

GRANT कमांड डेटाबेस उपयोगकर्ता के लिए नई अनुमतियाँ जोड़ता है। इसका एक बहुत ही सरल वाक्यविन्यास है, जिसे निम्नानुसार परिभाषित किया गया है:

अनुदान [विशेषाधिकार]
चालू [वस्तु]
प्रयोगकर्ता के लिए]
[अनुदान विकल्प के साथ]

इस आदेश के साथ आपूर्ति किए जा सकने वाले प्रत्येक पैरामीटर पर यहां एक विस्तृत विवरण दिया गया है:

  • विशेषाधिकार - या तो कीवर्ड ALL (विभिन्न प्रकार की अनुमतियां देने के लिए) या एक विशिष्ट डेटाबेस अनुमति या अनुमतियों का सेट हो सकता है। उदाहरणों में डेटाबेस बनाना, चयन करना, सम्मिलित करना, अद्यतन करना, हटाना, निष्पादित करना और दृश्य बनाना शामिल हैं।
  • वस्तु - कोई भी डेटाबेस ऑब्जेक्ट हो सकता है। इस क्लॉज में आपके द्वारा शामिल किए गए डेटाबेस ऑब्जेक्ट के प्रकार के आधार पर वैध विशेषाधिकार विकल्प भिन्न होते हैं। आमतौर पर, ऑब्जेक्ट या तो डेटाबेस, फ़ंक्शन होगा, संग्रहीत प्रक्रिया, टेबल या दृश्य।
  • उपयोगकर्ता - कोई भी डेटाबेस उपयोगकर्ता हो सकता है। यदि आप भूमिका-आधारित डेटाबेस सुरक्षा का उपयोग करना चाहते हैं तो आप इस खंड में उपयोगकर्ता के लिए एक भूमिका भी बदल सकते हैं।
  • यदि आप वैकल्पिक शामिल करते हैं अनुदान विकल्प के साथ GRANT कमांड के अंत में क्लॉज, आप न केवल निर्दिष्ट उपयोगकर्ता को अनुमतियाँ प्रदान करते हैं SQL कथन में परिभाषित किया गया है, लेकिन उपयोगकर्ता को उन्हें आगे अनुदान देने की अनुमति भी देता है करने की अनुमति अन्य डेटाबेस उपयोगकर्ता। इसलिए इस उपवाक्य का प्रयोग सावधानी से करें।

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

अनुदान चयन
एचआर कर्मचारियों पर
टू जो।

जो कर्मचारियों की तालिका से जानकारी प्राप्त कर सकता है। हालाँकि, वह अन्य उपयोगकर्ताओं को उस तालिका से जानकारी प्राप्त करने की अनुमति नहीं दे पाएगा क्योंकि DCL स्क्रिप्ट में GRANT OPTION क्लॉज शामिल नहीं था।

डेटाबेस एक्सेस को रद्द करना

REVOKE कमांड उस उपयोगकर्ता से डेटाबेस एक्सेस को हटा देता है जिसे पहले ऐसी एक्सेस दी गई थी। इस कमांड का सिंटैक्स निम्नानुसार परिभाषित किया गया है:

निरस्त करें [अनुमति के लिए विकल्प] [अनुमति]
चालू [वस्तु]
से [उपयोगकर्ता]
[कैस्केड]

यहाँ REVOKE कमांड के मापदंडों पर विस्तृत जानकारी दी गई है:

  • अनुमति - पहचाने गए उपयोगकर्ता से हटाने के लिए डेटाबेस अनुमतियों को निर्दिष्ट करता है। कमांड पहले से पहचानी गई अनुमति के लिए किए गए GRANT और DENY दोनों दावों को रद्द कर देता है।
  • वस्तु - कोई भी डेटाबेस ऑब्जेक्ट हो सकता है। इस क्लॉज में आपके द्वारा शामिल किए गए डेटाबेस ऑब्जेक्ट के प्रकार के आधार पर वैध विशेषाधिकार विकल्प भिन्न होते हैं। आमतौर पर, ऑब्जेक्ट या तो डेटाबेस, फ़ंक्शन, संग्रहीत कार्यविधि, तालिका या दृश्य होगा।
  • उपयोगकर्ता - कोई भी डेटाबेस उपयोगकर्ता हो सकता है। यदि आप भूमिका-आधारित डेटाबेस सुरक्षा का उपयोग करना चाहते हैं तो आप इस खंड में उपयोगकर्ता के लिए एक भूमिका भी बदल सकते हैं।
  • NS के लिए अनुदान विकल्प खंड अन्य उपयोगकर्ताओं को निर्दिष्ट अनुमति देने के लिए निर्दिष्ट उपयोगकर्ता की क्षमता को हटा देता है। यदि आप को शामिल करते हैं के लिए अनुदान विकल्प REVOKE कथन में खंड, प्राथमिक अनुमति निरस्त नहीं की जाती है। यह खंड केवल देने की क्षमता को निरस्त करता है।
  • NS झरना विकल्प किसी भी उपयोगकर्ता से निर्दिष्ट अनुमति को भी रद्द कर देता है जिसे निर्दिष्ट उपयोगकर्ता ने अनुमति दी थी।

निम्न आदेश पिछले उदाहरण में जो को दी गई अनुमति को रद्द कर देता है:

चयन रद्द करें
एचआर कर्मचारियों पर
जो से।

डेटाबेस एक्सेस को स्पष्ट रूप से नकारना

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

इनकार [अनुमति]
चालू [वस्तु]
प्रयोगकर्ता के लिए]

DENY कमांड के पैरामीटर GRANT कमांड के लिए उपयोग किए जाने वाले समान हैं। उदाहरण के लिए, यदि आप यह सुनिश्चित करना चाहते हैं कि मैथ्यू को कभी भी कर्मचारियों की तालिका से जानकारी हटाने की क्षमता प्राप्त नहीं होगी, तो निम्न आदेश जारी करें:

हटाने से इनकार करें
एचआर कर्मचारियों पर
टू मैथ्यू।