منح صلاحيات الوصول GRANT
يستخدم هذا الأمر لمنح صلاحيات الوصول access privileges لمستخدمٍ أو مجموعة مستخدمين أو أكثر، وله إحدى الصيغ العامّة الآتية (بحسب محركات البيانات المختلفة):
في محرك البيانات PostgreSQL
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
[, ...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] table_name [, ...]
TO { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] } [ WITH GRANT OPTION ];
إعطاء صلاحية تنفيذ استعلامات SELECT
و INSERT
و UPDATE
و DELETE
وإنشاء مفتاح ثانوي عبر الكلمة المفتاحية REFERENCES
أو كافة الصلاحيات على الجدول table_name
للمستخدم باسم name
أو مجموعة مستخدمين GROUP name
أو لكافة المستخدمين PUBLIC
أو للمستخدم الحالي CURRENT_USER
، وعند إضافة العبارة WITH GRANT OPTION
فإنها تتيح للمستخدم إعطاء الصلاحيات لمستخدم آخر.
GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
[, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
ON [ TABLE ] table_name [, ...]
TO { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] } [ WITH GRANT OPTION ];
إعطاء صلاحية تنفيذ استعلامات SELECT
و INSERT
و UPDATE
وإنشاء مفتاح ثانوي عبر الكلمة المفتاحية REFERENCES
أو كافة الصلاحيات على العمود column_name
(أو أكثر من عمود) في الجدول table_name
للمستخدم باسم name
أو مجموعة مستخدمين GROUP name
أو لكافة المستخدمين PUBLIC
أو للمستخدم الحالي CURRENT_USER
، وعند إضافة العبارة WITH GRANT OPTION
فإنها تتيح للمستخدم إعطاء الصلاحيات لمستخدم آخر.
GRANT { { CREATE | CONNECT | TEMPORARY} [, ...] | ALL [ PRIVILEGES ] }
ON DATABASE database_name [, ...]
TO { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] }[ WITH GRANT OPTION ];
إعطاء الصلاحيات بإنشاء العناصر (كالجداول أو الفهارس، ...إلخ.) CREATE
أو الاتصال بقاعدة البيانات CONNECT
أو إنشاء جداول مؤقتة TEMPORARY
في قاعدة البيانات باسم database_name
للمستخدم باسم name
أو مجموعة مستخدمين GROUP name
أو لكافة المستخدمين PUBLIC
أو للمستخدم الحالي CURRENT_USER
، وعند إضافة العبارة WITH GRANT OPTION
فإنها تتيح للمستخدم إعطاء الصلاحيات لمستخدم آخر.
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTION function_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
TO { [GROUP ] name | PUBLIC | CURRENT_USER [, ...] } [ WITH GRANT OPTION ];
إعطاء الصلاحيات بتنفيذ EXECUTE (أو كافة الصلاحيات المتاحة ALL PRIVILEGES) للدالة المحددة باسم function_name
(والتي تحدد معاملاتها بالنوع argmode
كدخل أو خرج والاسم arg_name
ونوع البيانات arg_type
) وذلك للمستخدم باسم name
أو مجموعة مستخدمين GROUP name
أو لكافة المستخدمين PUBLIC
أو للمستخدم الحالي CURRENT_USER
، وعند إضافة العبارة WITH GRANT OPTION
فإنها تتيح للمستخدم إعطاء الصلاحيات لمستخدم آخر.
أمثلة
لمنح صلاحية إدخال سجلات جديدة للجدول books
لكافة المستخدمين يُستخدم الأمر:
GRANT INSERT ON books TO PUBLIC;
ولمنح كافة الصلاحيات المتعلقة بقاعدة البيانات centre_db
للمستخدم الحالي والسماح له بمنح الصلاحيات لمستخدم آخر، يُستخدَم الأمر:
GRANT ALL PRIVILEGES ON DATABASE centre_db
TO CURRENT_USER WITH GRANT OPTION;
ولمنح صلاحية تنفيذ الدالة get_final_bill
للمستخدم mohammad
يُستخدم الأمر:
GRANT EXECUTE ON FUNCTION get_final_bill (customer_id int) TO mohammad;
في محركي البيانات MySQL و Oracle
GRANT
priv_type [(column_list)]
ON [ {TABLE | FUNCTION} ] priv_level
TO user
[WITH {GRANT OPTION | resource_option} ...]
وذلك لإعطاء المستخدم user
نوع صلاحية priv_type
على الأعمدة column_list
الموجودة في العنصر المحدد (جدول أو دالة) بمستوى معين من الصلاحيات priv_level
ومنحه إمكانية إعطاء الصلاحيات لمستخدم آخر WITH GRANT OPTION
أو تحديد بعض خيارات المصادر resource_option
، وتوضح الجداول الآتية الخيارات الممكنة لكلّ مما سبق.
خيارات نوع الصلاحية 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
|
خيارات المصادر resource_option
الخيار | مهمته |
---|---|
MAX_QUERIES_PER_HOUR count
|
لتحديد العدد الأقصى للاستعلامات المسموحة خلال الساعة بالعدد count |
MAX_UPDATES_PER_HOUR count
|
لتحديد العدد الأقصى للتحديثات (التعديلات) المسموحة خلال الساعة بالعدد count |
MAX_CONNECTIONS_PER_HOUR count
|
لتحديد العدد الأقصى للاتصالات المسموحة خلال الساعة بالعدد count |
أمثلة
لمنح صلاحية إدخال سجلات جديدة للجدول books
الموجود في قاعدة البيانات centre_db
للمستخدم ahmad
مع إمكانية إعطائه الصلاحيات لمستخدم آخر وبحد أقصى 5 اتصالات خلال الساعة، يُستخدم الأمر:
GRANT INSERT ON TABLE centre_db.books TO ahmad WITH GRANT OPTION MAX_CONNECTIONS_PER_HOUR 5;
ولمنح كافة الصلاحيات المتعلقة بكافة الجداول الموجودة في قاعدة البيانات centre_db
للمستخدم mohammad
يُستخدَم الأمر:
GRANT ALL PRIVILEGES ON centre_db.* TO mohammad;
في محرك البيانات SQL Server
GRANT { ALL [ PRIVILEGES ] }
| permission [ ( column [ ,...n ] ) ] [ ,...n ]
[ ON object ] TO name [ ,...n ]
[ WITH GRANT OPTION ];
إذ يمكن منح بعض الصلاحيات أو كلها على الأعمدة المحدد باللائحة column
والموجودة في العنصر object
للمستخدم باسم name
مع إعطائه إمكانية منح الصلاحيات لمستخدم آخر WITH GRANT OPTION
، وتختلف الصلاحيات المتاحة بحسب العنصر المحدد object
كما هو موضح في الجدول الآتي:
العنصر | الصلاحيات المتاحة |
قاعدة بيانات | CREATE DATABASE
|
دالة تعيد قيمة أوليّة scalar | EXECUTE
|
دالة تعيد جدول من النتائج | DELETE
|
جدول | DELETE
|
عرض VIEW | DELETE
|
وللعودة إلى كافة الأذونات permission التي يتيحها محرك SQL Server تمكن الاستفادة من الصفحة.
أمثلة
لمنح صلاحية إنشاء عرض view
للمستخدم mohammad
في قاعدة البيانات centre_db
والسماح له بمنح الصلاحيات لمستخدم آخر يُستخدم الأمر:
GRANT CREATE VIEW ON centre_db TO mohammad WITH GRANT OPTION;
ولمنح كافة الصلاحيات المتعلقة بالجدول books
للمستخدم sarah
يُستخدَم الأمر:
GRANT ALL ON books TO sarah;
التوافقية
SQLServer | SQLite | Oracle | PostgreSQL | MySQL |
---|---|---|---|---|
نعم | لا | نعم | نعم | نعم |