شرح صفوف ومحتوى الفقرة
يُحظر هندسياً وأمنياً ربط تطبيقات الويب أو الخوادم الخلفية بحساب المدير العام 'root'؛ بل يجب إنشاء حساب مخصص لكل خدمة عبر الأمر القياسي CREATE USER:
CREATE USER IF NOT EXISTS 'shop_app'@'10.0.1.%': ينشئ الحساب إذا لم يكن موجوداً مسبقاً، مما يمنع توقف سكربتات الإعداد الآلي بالخطأ رقم1396.IDENTIFIED BY 'Str0ng#AppKey2026!': يمرر كلمة المرور إلى محرك التشفير الافتراضي في الخادم ليحفظ بصمتها المشفرة غير القابلة للعكس داخل العمودauthentication_string.- حساب جديد بلا صلاحيات افتراضية: يُنشأ الحساب الجديد في MySQL 8 بصلاحية الاتصال فقط (
USAGE)، أي أنه يستطيع تسجيل الدخول ولكنه لا يملك صلاحية قراءة أو تعديل أي جدول حتى تُمنح له الصلاحيات صراحةً (كما سنتعلم في الدرس القادم). - فصل الحسابات حسب الوظيفة: خصص حساباً مستقلاً لتطبيق الويب (
'shop_app') وحساباً منفصلاً للتقارير ('report_reader').
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
SQL
CREATE USER IF NOT EXISTS 'shop_app'@'10.0.1.%'
IDENTIFIED BY 'Str0ng#AppKey2026!';
CREATE USER IF NOT EXISTS 'report_reader'@'localhost'
IDENTIFIED BY 'R3adOnly#Pass99!';