إلغاء صلاحيات الوصول REVOKE
يستخدم هذا الأمر لإلغاء صلاحيات الوصول access privileges لمستخدمٍ أو مجموعة مستخدمين أو أكثر، وله إحدى الصيغ العامّة الآتية (بحسب محركات البيانات المختلفة):
في محرك البيانات PostgreSQL
REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
[, ...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tbl_name [, ...]
FROM { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] };
إلغاء صلاحية تنفيذ استعلامات SELECT
و INSERT
و UPDATE
و DELETE
وإنشاء مفتاح ثانوي عبر الكلمة المفتاحية REFERENCES
أو كافة الصلاحيات على الجدول tbl_name
للمستخدم باسم name
أو مجموعة مستخدمين GROUP name
أو لكافة المستخدمين PUBLIC
أو للمستخدم الحالي CURRENT_USER
.
REVOKE { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
[, ...] | ALL [ PRIVILEGES ] ( col_name [, ...] ) }
ON [ TABLE ] tbl_name [, ...]
FROM { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] } ;
إلغاء صلاحية تنفيذ استعلامات SELECT
و INSERT
و UPDATE
وإنشاء مفتاح ثانوي عبر الكلمة المفتاحية REFERENCES
أو كافة الصلاحيات على العمود col_name
(أو أكثر من عمود) في الجدول tbl_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 DATABASE CREATE FUNCTION
|
دالة تعيد قيمة أوليّة scalar | EXECUTE
|
دالة تعيد جدول من النتائج | DELETE INSERT
|
جدول | DELETE INSERT
|
عرض VIEW | DELETE INSERT
|
وللعودة إلى كافة الأذونات 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 |
---|---|---|---|---|
نعم | لا | نعم | نعم | نعم |