انتقل إلى محتوى الدرس

Privilege Scopes Global to Column نطاقات الصلاحيات من الخادم للعمود

تعلّم إدارة الصلاحيات والأدوار عبر GRANT و REVOKE وتطبيق مبدأ أقل الصلاحيات في MySQL 8 مع أمثلة SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يطبق خادم MySQL 8 الرقابة على الصلاحيات عبر تسلسل هرمي يتكون من خمسة مستويات (Scopes) تُحدد بواسطة جملة ON داخل أمر المنح:

  • 1. النطاق الشامل للخادم (ON *.*): يُحفظ في جدول mysql.user وmysql.global_grants، ويسري على جميع قواعد البيانات والجداول في الخادم (يُقتصر على مديري قواعد البيانات فقط).
  • 2. نطاق قاعدة البيانات (ON shop_db.*): يُحفظ في جدول mysql.db، ويسري على كافة الجداول والعروض داخل قاعدة البيانات shop_db وحدها.
  • 3. نطاق الجدول المحدد (ON shop_db.orders): يُحفظ في جدول mysql.tables_priv، ويقصر الصلاحية على جدول واحد بعينه.
  • 4. نطاق العمود (SELECT (order_id, status) ON shop_db.orders): يُحفظ في جدول mysql.columns_priv، ويسمح بقراءة أو تعديل أعمدة محددة فقط مع حجب الأعمدة الحساسة كالرواتب أو رموز الدفع.
  • 5. نطاق البرامج المخزنة (ON PROCEDURE shop_db.calc_tax): يُحفظ في جدول mysql.procs_priv، ويمنح صلاحية التنفيذ EXECUTE لإجراء مخزن أو دالة محددة.
SQL
GRANT SELECT (id, customer_name, order_status)
ON shop_db.orders
TO 'report_reader'@'localhost';

SELECT Grantee, Db, Table_name, Column_name, Column_priv
FROM mysql.columns_priv
WHERE Db = 'shop_db';

محاكي إدارة الصلاحيات والأدوار (GRANT / REVOKE / Roles) في MySQL 8