شرح صفوف ومحتوى الفقرة
يطبق خادم 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';