کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

زبان مدیریت داده

زبان مدیریت داده (DCL)

DCL مخفف Data Control Language امکان تعيين نوع استراتژی ها و روش های دستيابی، تعريف اندیس ها و مرتب سازی داده های پايگاه داده را فراهم می نماید.
با استفاده از DCL می توان امتیازات و مجوزهای خاص برای انجام عملیات و کارهای مشخص بر روی جداول، view ها، procedure ها و غیره .. ، به کاربران و یا نقش های کاربری تخصیص داد.
دستورات DCL عبارتند از


  1. GRANT: این دستور برای اعطا مجوز به کاربران (یا نقش های کاربری) برای انجام کارهای مشخص بکار می رود.
  2. REVOKE: از این دستور برای لغو کردن یا سلب مجوزهای و امتیازات اعطا شده به کاربر استفاده می شود.

در کل دو نوع مجوز وجود دارد


  1. System privilege
  2. Object privilege

System Privileges عبارت است از اجازه ی اجرا عملیات خاص یا مجوز اجرای عملیات بر روی هر شی ای از نوع مشخص.
معمولا توسط مدیر پایگاه داده به کاربر اعطا می گردد. به عنوان نمونه می توان به CREATE SESSION، CREATE TABLE و CREATE USER اشاره کرد.
Object Privileges عبارت است از مجوزهایی که برای انجام عملیات بر روی اشیایی همچون جداول، view ها، synonym ها، procedure ها صادر می شوند. این نوع مجوز تنها توسط مالک شی قابل اعطا می باشد.
جدول زیر Object privilegeها را به همراه شرح عملکر آن ها برای شما فهرست کرده است.


می توان تعریف جدول را با استفاده از دستور ALTER TABLE تغییر داد. به کاربر اجازه می دهد تغییراتی را به جدول دلخواه خود را در پایگاه داده اعمال کند.
ALTER
به کاربر اجازه می دهد، سطرهایی را از جدول حذف می کند. توجه: باید همراه با مجوز SELECT، مجوز DELETE نیز برای انجام عملیات بر روی جدول به کاربر اعطا گردد.
DELETE
به کاربر اجازه می دهد (با بکار گیری دستور CREATE INDEX) یک اندیس بر روی جدول ایجاد کند.
INDEX
به کاربر اجازه می دهد با استفاده از دستور INSERT، سطرهای جدید به جدول اضافه کند.
INSERT
یک محدودیت (constraint) ایجاد کرده که این محدودیت به جدول اشاره می کند. نمی توان این مجوز را به یک نقش کاربری (role) اعطا کرد.
REFERENCES
به کاربر اجازه می دهد با استفاده از دستور SELECT از جدول query بگیرد.
SELECT
به کاربر اجازه می دهد (با استفاده از دستور UPDATE) داده های درون جدول را بروز رسانی کرده یا تغییر دهد.
UPDATE
توجه: به همراه مجوز SELECT باید مجوز UPDATE نیز برای اجرای عملیات بر روی جدول به کاربر اعطا شود.

دستور Grant

از این دستور برای اعطای مجوز انجام عملیات بر روی اشیا پایگاه داده از جمله جداول، view، رویه ها (procedure) به کاربرها و نقش ها استفاده می شود.


مثال:

فرض بگیرید جدولی به نام emp دارید. حال می خواهید مجوز انجام عملیاتی همچون بروز رسانی، حذف، انتخاب، درج را بر روی این جدول یا به کاربر دیگری “SAMI” اعطا کند.


grant select،‎ update،‎ insert on emp to sami;‎‏ ‏

حال فرض کنید می خواهید مجوز اجرای تمامی عملیات بر روی جدول emp را به sami اعطا کنید:


grant  all on emp to sami;‎

اکنون می خواهیم مجوز اجرای دستور select بر روی جدول مذکور را به تمامی کاربران پایگاه داده اعطا کنید.


grant  all on emp to sami;‎

می خواهیم مجوز بروز رسانی و درج (update & select) را بر روی تنها برخی از ستون های جدول به کاربر اعطا کنیم، سپس اسم ستون ها را در دستور grant لحاظ کنیم.
برای مثال، فرض کنید که قصد داریم مجوز بروز رسانی را فقط بر روی ستون ename و مجوز درج (insert) را نیز تنها بر روی ستون های empno و ename صادر کنیم. برای نیل به این هدف، دستور زیر را می نویسیم.


grant update (ename)‎،insert (empno،‎ ename)  on emp to sami;‎

جهت اعطا مجوز اجرای دستور insert بر روی جدول emp به sami و همچنین دادن قابلیت انتقال مجوز خود به کاربر دیگر، باید از عبارت WITH GRANT OPTION در دستور GRANT استفاده کنید.


grant select on emp to sami with grant option;‎

دستور REVOKE

این دستور به منظور پس گرفتن یا لغو مجوزی که از پیش به کاربری اعطا شده، بکار می رود.
به عنوان مثال، برای لغو مجوز اجرای دستورات select، update، insert بر روی جدول که به کاربری به نام sami اعطا شده، از دستور زیر استفاده می کنیم.


revoke select،‎ update،‎ insert on emp from sami;‎

جهت لغو مجوز انجام عملیات درج بر روی جدول emp که به public (عموم کاربران( اعطا شده از دستور زیر استفاده می کنیم.


revoke select on emp from public;‎

به منظور لغو مجوز اجرای عملیات بروز رسانی بر روی ستون ename و مجوز اجرای دستور insert بر روی ستون های empno و ename، دستور revoke را بدین ترتیب بنویسید:


revoke update،‎ insert on emp from sami;‎

توجه: نمی توان مجوز اجرای عملیات مختلف بر روی جدول، در سطح ستون را پس گرفت یا لغو کرد. فرض بگیرید می خواهیم مجوز اجرای دستور insert بر روی ستون ename را از کاربر پس بگیرید، برای این منظور ابتدا لازم است کل مجوز insert را لغو کرده، سپس مجوز مدیریت ستون empno را به کاربر بدهید.


ROLE- نقش های کاربری

Role، عبارت است از یک مجموعه مجوز.
Role در مدیریت مجوزها کمک شایانی به شما می کند، به خصوص زمانی که کاربران متعددی باید دارای مجموعه مجوزهای یکسانی باشند.
به عنوان مثال، فرض بگیرید پایگاه داده ی مورد نظر دارای چهار کاربر به نام های Sami، Scott، Ashi، Tanya می باشد. می خواهید مجوز اجرای دستورات select، update بر روی جدول emp و بر روی جدول dept مجوز select و update را به کاربران مزبور اعطا کنید. برای این منظور، ابتدا باید یک role (نقش کاربری) با نوشتن دستور زیر ایجاد کنید.


create role clerks

سپس شروع به اعطای مجوز به این نقش می کنیم.


grant select,update on emp to clerks;‎

        grant select,delete on dept to clerks;‎

حال نقش کاربری ایجاد شده (clerks) را به صورت زیر، به کاربران تخصیص دهید.


grant clerks to sami, scott, ashi, tanya ;‎

اکنون Sami, Scott, Ashi و Tanya همگی دارای مجوزهای اعطا شده به نقش کاربری clerks می باشند.
فرض کنید می خواهیم پس از گذشت یک ماه، مجوز اجرای دستور delete بر روی جدول emp را به تمامی این کاربران اعطا کنیم. برای دستیابی به این هدف کافی است مجوز مذکور را به نقش کاربری clerks اعطا کنیم تا همگی کاربران به طور خودکار از این برخوردار شوند.


grant delete on emp to clerks;‎

چنانچه مایلید مجوز اجرای دستور update بر روی جدول emp را از این کاربران سلب کنید، کافی است مجوز یاد شده را از نقش کاربری مربوط پس بگیرید (دستور revoke را روی آن اجرا کنید).


revoke update on emp from clerks;‎

جهت حذف یک نقش کاربری

Drop role clerks;‎

بازیابی و مشاهده ی اطلاعات مربوط به مجوزها به کاربران

برای اینکه بررسی کنیم چه مجوزهایی (برای اجرای عملیات روی جدول) به کاربران اعطا کرده ایم، از دستور زیر استفاده می کنیم.


SELECT * FROM USER_TAB_PRIVS_MADE

حال به منظور مشاهده ی مجوزهایی که توسط دیگر کاربران به ما اعطا شده، دستور زیر را بکار می بریم.


SELECT * FROM USER_TAB_PRIVS_RECD;‎

برای اینکه پی ببریم چه مجوزهایی برای اجرای عملیات در سطح ستون (جدول) به کاربران اعطا کرده ایم.


SELECT * FROM USER_COL_PRIVS_MADE

جهت مشاهده ی اطلاعاتی درباره ی مجوز اجرای عملیات در سطح ستون (جدول) توسط دیگر کاربران به ما.


SELECT * FROM USER_COL_PRIVS_RECD;‎

برای اینکه ببینیم چه مجوزهایی به نقش های کاربری اعطا شده، از دستور زیر استفاده می کنیم.


SELECT * FROM USER_ROLE_PRIVS;‎
1394/07/27 7005 1398
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...