ينشئ أدوارًا جديدة. والدور عبارة عن مجموعة من الامتيازات. ويحصل المستخدم الذي يُسنَد إليه دور على جميع امتيازات هذا الدور.
الصيغة:
CREATE ROLE [IF NOT EXISTS | OR REPLACE] name1 [, name2 [,...]] [ON CLUSTER cluster_name]
[IN access_storage_type]
[SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] | PROFILE 'profile_name'] [,...]
يمكن إسناد عدة أدوار إلى المستخدم. ويمكن للمستخدمين تفعيل الأدوار المُسندة إليهم بأي مجموعة يختارونها باستخدام عبارة SET ROLE. ويكون النطاق النهائي للامتيازات عبارة عن مجموعة مجمّعة من جميع امتيازات كل الأدوار المفعّلة. وإذا كانت لدى المستخدم امتيازات ممنوحة مباشرةً إلى حساب المستخدم، فإنها تُجمع أيضًا مع الامتيازات الممنوحة عبر الأدوار.
يمكن أن تكون للمستخدم أدوار افتراضية تُفعَّل عند تسجيل دخوله. لتعيين الأدوار الافتراضية، استخدم عبارة SET DEFAULT ROLE أو عبارة ALTER USER.
لسحب دور، استخدم عبارة REVOKE.
لحذف دور، استخدم عبارة DROP ROLE. ويُسحب الدور المحذوف تلقائيًا من جميع المستخدمين والأدوار التي كان مُسندًا إليها.
CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;
تنشئ مجموعة الاستعلامات هذه الدور accountant الذي يملك امتياز قراءة البيانات من قاعدة البيانات db.
إسناد الدور إلى المستخدم mira:
GRANT accountant TO mira;
بعد تعيين الدور، يمكن للمستخدم استخدامه وتنفيذ الاستعلامات المسموح بها. على سبيل المثال:
SET ROLE accountant;
SELECT * FROM db.*;
آخر تعديل في ٢٥ يونيو ٢٠٢٦