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