إلغاء صلاحيات الوصول REVOKE

من موسوعة حسوب
< SQL
مراجعة 15:41، 28 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')

يستخدم هذا الأمر لإلغاء صلاحيات الوصول access privileges لمستخدمٍ أو مجموعة مستخدمين أو أكثر، وله إحدى الصيغ العامّة الآتية (بحسب محركات البيانات المختلفة):

في محرك البيانات PostgreSQL

REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
  [, ...] | ALL [ PRIVILEGES ] }
  ON [ TABLE ] table_name [, ...]
  FROM { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] };

إلغاء صلاحية تنفيذ استعلامات SELECT و INSERT و UPDATE و DELETE وإنشاء مفتاح ثانوي عبر الكلمة المفتاحية REFERENCES أو كافة الصلاحيات على الجدول table_name للمستخدم باسم name أو مجموعة مستخدمين GROUP name أو لكافة المستخدمين PUBLIC أو للمستخدم الحالي CURRENT_USER.

REVOKE { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
  [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
  ON [ TABLE ] table_name [, ...]
  FROM { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] } ;

إلغاء صلاحية تنفيذ استعلامات SELECT و INSERT و UPDATE وإنشاء مفتاح ثانوي عبر الكلمة المفتاحية REFERENCES أو كافة الصلاحيات على العمود column_name (أو أكثر من عمود) في الجدول table_name للمستخدم باسم name أو مجموعة مستخدمين GROUP name أو لكافة المستخدمين PUBLIC أو للمستخدم الحالي.

REVOKE { { CREATE | CONNECT | TEMPORARY} [, ...] | ALL [ PRIVILEGES ] }
  ON DATABASE database_name [, ...]
  FROM { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] };

إلغاء الصلاحيات بإنشاء العناصر (كالجداول أو الفهارس، ...إلخ.) CREATE أو الاتصال بقاعدة البيانات CONNECT أو إنشاء جداول مؤقتة TEMPORARY في قاعدة البيانات باسم database_name للمستخدم باسم name أو مجموعة مستخدمين GROUP name أو لكافة المستخدمين PUBLIC أو للمستخدم الحالي CURRENT_USER.

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
  ON FUNCTION function_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
  FROM { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] } ;

إلغاء الصلاحيات بتنفيذ EXECUTE (أو كافة الصلاحيات المتاحة ALL PRIVILEGES) للدالة المحددة باسم function_name (والتي تحدد معاملاتها بالنوع argmode كدخل أو خرج والاسم arg_name ونوع البيانات arg_type) وذلك للمستخدم باسم name أو مجموعة مستخدمين GROUP name أو لكافة المستخدمين PUBLIC أو للمستخدم الحالي CURRENT_USER.

أمثلة

لإلغاء صلاحية إدخال سجلات جديدة للجدول books لكافة المستخدمين يُستخدم الأمر:

REVOKE INSERT ON books FROM PUBLIC;

ولإلغاء كافة الصلاحيات المتعلقة بقاعدة البيانات centre_db للمستخدم الحالي يُستخدَم الأمر:

REVOKE ALL PRIVILEGES ON DATABASE centre_db 
FROM CURRENT_USER;

ولإلغاء صلاحية تنفيذ الدالة get_final_bill للمستخدم mohammad يُستخدم الأمر:

REVOKE EXECUTE ON FUNCTION get_final_bill (customer_id int) FROM mohammad;

في محركي البيانات MySQL و Oracle

REVOKE
  priv_type [(column_list)]
  ON [ {TABLE | FUNCTION} ] priv_level
  FROM user

وذلك لإلغاء صلاحية المستخدم user من النوع priv_type على الأعمدة column_list الموجودة في العنصر المحدد (جدول أو دالة) بمستوى معين من الصلاحيات priv_level، وتوضح الجداول الآتية الخيارات الممكنة لكلّ مما سبق.

خيارات نوع الصلاحية priv_type

الخيار مهمته
ALL [PRIVILEGES]‎ كافة الصلاحيات
ALTER صلاحية تعديل الجدول ALTER TABLE
CREATE صلاحية إنشاء قاعدة بيانات جديدة أو جدول جديد
CREATE USER صلاحية إنشاء مستخدم جديد
CREATE VIEW صلاحية إنشاء عرض جديد
DELETE صلاحية الحذف DELETE
DROP صلاحية الحذف DROP
EXECUTE صلاحية التنفيذ
INDEX صلاحية إنشاء أو حذف الفهارس
INSERT صلاحية إضافة سجلات جديدة
REFERENCES صلاحية ربط الجداول عبر المفتاح الثانوي
SELECT صلاحية تنفيذ استعلام SELECT
UPDATE صلاحية تنفيذ استعلام UPDATE

خيارات مستوى الصلاحية priv_level

المستوى دلالته
* كافة الجداول في قاعدة البيانات الحالية
*.* كافة الجداول في كافة قواعد البيانات الموجودة
db_name.*‎ كافة الجداول الموجودة في قاعدة البيانات db_name
db_name.tbl_name الجدول tbl_name الموجود في قاعدة البيانات db_name
tbl_name الجدول tbl_name

أمثلة

لإلغاء صلاحية إدخال سجلات جديدة للجدول books الموجود في قاعدة البيانات centre_db للمستخدم ahmad يُستخدم الأمر:

REVOKE INSERT ON TABLE centre_db.books FROM ahmad;

ولإلغاء كافة الصلاحيات المتعلقة بكافة الجداول الموجودة في قاعدة البيانات centre_db للمستخدم mohammad يُستخدَم الأمر:

REVOKE ALL PRIVILEGES ON centre_db.* FROM mohammad;

في محرك البيانات SQL Server

REVOKE { ALL [ PRIVILEGES ] }  
  | permission [ ( column [ ,...n ] ) ] [ ,...n ]  
  [ ON object ] FROM name [ ,...n ] ;

إذ يمكن إلغاء بعض الصلاحيات أو كلها على الأعمدة المحدد باللائحة column والموجودة في العنصر object من المستخدم باسم name، وتختلف الصلاحيات الملغية بحسب العنصر المحدد object كما هو موضح في الجدول الآتي:

العنصر الصلاحيات المتاحة
قاعدة بيانات CREATE DATABASECREATE FUNCTION

CREATE TABLE

CREATE VIEW

دالة تعيد قيمة أوليّة scalar EXECUTE
دالة تعيد جدول من النتائج DELETEINSERT

SELECT

UPDATE

جدول DELETEINSERT

REFERENCES

SELECT

UPDATE

عرض VIEW DELETEINSERT

SELECT

UPDATE

وللعودة إلى كافة الأذونات permission التي يتيحها محرك SQL Server تمكن الاستفادة من هذه الصفحة.

أمثلة

لإلغاء صلاحية إنشاء عرض view للمستخدم mohammad في قاعدة البيانات centre_db يُستخدم الأمر:

REVOKE CREATE VIEW ON centre_db FROM mohammad;

ولإلغاء كافة الصلاحيات المتعلقة بالجدول books للمستخدم sarah يُستخدَم الأمر:

REVOKE ALL ON books FROM sarah;

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم لا نعم نعم نعم

مصادر