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

إدارة حسابات المستخدمين والمصادقة في MySQLMySQL User Account Management and Authentication

تعلّم إدارة حسابات المستخدمين والمصادقة في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
7
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع
مخطط توضيحي لدرس إدارة حسابات المستخدمين والمصادقة في MySQL
مخطط توضيحي لدرس إدارة حسابات المستخدمين والمصادقة في MySQL

على خلاف الأنظمة التي تكتفي باسم المستخدم وحده، يعرّف خادم MySQL 8 هوية كل حساب كزوج متلازم يتكون من اسم المستخدم واسم المضيف بالصيغة القياسية 'user_name'@'host_name'. ولهذا فإن الحساب 'shop_app'@'localhost' والحساب 'shop_app'@'10.0.1.25' يُعدان حسابين منفصلين تماماً في جدول النظام mysql.user:

  • 'user'@'localhost': يطابق الاتصالات المحلية الصادرة من نفس الخادم فقط.
  • 'user'@'10.0.1.%': يستخدم رمز المطابقة % لتقييد الاتصال بخوادم التطبيق الواقعة ضمن الشبكة الفرعية الداخلية 10.0.1.x حصراً.
  • 'user'@'%': يسمح بالاتصال من أي عنوان IP (شائع في بيئات الحاويات السحابية ويجب حمايته بجدار ناري وشبكة خاصة).
  • SELECT USER(), CURRENT_USER();: تعرض دالة USER() الهوية التي أرسلها العميل عند الاتصال، بينما تعرض CURRENT_USER() الحساب الفعلي المسجل في جدول الصلاحيات الذي طابق الجلسة.
+--------------------+--------------------+
| client_connection  | matched_account    |
+--------------------+--------------------+
| root@localhost     | root@localhost     |
+--------------------+--------------------+
SQL
SELECT USER() AS client_connection,
       CURRENT_USER() AS matched_account;

SELECT User, Host, plugin, account_locked
FROM mysql.user
ORDER BY User, Host;

يُحظر هندسياً وأمنياً ربط تطبيقات الويب أو الخوادم الخلفية بحساب المدير العام '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!';

محاكي إدارة حسابات المستخدمين والمصادقة في MySQL 8

يعتمد خادم MySQL 8.0 و8.4 إضافة المصادقة القياسية الحديثة caching_sha2_password بدلاً من الإضافة القديمة mysql_native_password التي كانت تعتمد على خوارزمية SHA-1 الضعيفة:

  • caching_sha2_password: تطبق خوارزمية التجزئة القوية SHA-256 مع آلاف الدورات لحماية بصمة كلمة المرور في جدول mysql.user، وتدمج معها ذاكرة تخزين مؤقت داخل الخادم لتسريع عمليات الاتصال المتكررة في أجزاء من المللي ثانية.
  • IDENTIFIED WITH caching_sha2_password BY '...': يحدد صراحةً ربط الحساب ببروتوكول المصادقة القياسي الحديث.
  • مصادقة التحدي والاستجابة الآمنة: لا تُرسل كلمة المرور كنص صريح عبر الشبكة؛ بل يتحقق الخادم منها عبر بروتوكول التحدي والاستجابة المشفر أو عبر قناة TLS الآمنة.
  • SHOW VARIABLES LIKE 'default_authentication_plugin': يفحص إضافة المصادقة الافتراضية المعتمدة في الخادم.
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
SQL
SHOW VARIABLES LIKE 'default_authentication_plugin';

CREATE USER IF NOT EXISTS 'api_worker'@'127.0.0.1'
IDENTIFIED WITH caching_sha2_password
BY 'Sha2#SecureToken88!';

تتطلب الإدارة الأمنية الاحترافية لقواعد البيانات تدوير كلمات المرور دورياً وقفل الحسابات المشبوهة أو الخاملة فوراً دون حذفها، وذلك عبر الأمر القياسي ALTER USER:

  • ALTER USER 'shop_app'@'10.0.1.%' IDENTIFIED BY '...': يحدّث كلمة المرور فوراً في ذاكرة الخادم وجدول النظام دون الحاجة لإعادة تشغيل MySQL.
  • PASSWORD EXPIRE INTERVAL 90 DAY: يفرض سياسة انتهاء صلاحية كلمة المرور كل 90 يوماً لحسابات الموظفين والمحللين (مع إبقاء حسابات تطبيقات الخادم الآلية على الوضع PASSWORD EXPIRE NEVER لمنع توقف الموقع فجأة).
  • ALTER USER ... ACCOUNT LOCK;: يقفل الحساب فوراً ويمنع أي تسجيل دخول جديد بالخطأ رقم 3118 مع الاحتفاظ بجميع إعداداته لسجل المراجعة.
  • ALTER USER ... ACCOUNT UNLOCK;: يعيد فتح الحساب المقفول بأمان عند انتهاء الفحص.
SQL
ALTER USER 'shop_app'@'10.0.1.%'
IDENTIFIED BY 'N3w#RotatedKey2026!'
PASSWORD EXPIRE INTERVAL 90 DAY;

ALTER USER 'report_reader'@'localhost' ACCOUNT LOCK;
ALTER USER 'report_reader'@'localhost' ACCOUNT UNLOCK;

احرص على مراجعة جدول mysql.user دورياً لرصد أي حسابات مهملة أو مضيفات مفتوحة، واحذف الحسابات التي انتهت الحاجة إليها عبر الأمر القياسي DROP USER:

  • SELECT User, Host, account_locked, password_expired FROM mysql.user: يستعرض حالة القفل وصلاحية كلمات المرور لجميع الحسابات المسجلة.
  • RENAME USER 'old'@'host' TO 'new'@'host': يغيّر اسم المستخدم أو المضيف مع الحفاظ الكامل على إعداداته.
  • DROP USER IF EXISTS 'api_worker'@'127.0.0.1';: يحذف الحساب نهائياً من جداول النظام ويمسح سجلاته من الذاكرة النشطة في خطوة ذرية واحدة.
  • تحذير من التعديل اليدوي لجدول النظام: لا تستخدم أبداً أوامر DELETE FROM mysql.user اليدوية، بل التزم دائماً بأوامر CREATE USER وALTER USER وDROP USER لتحديث ذاكرة الخادم تلقائياً.
+---------------+-----------+----------------+------------------+
| User          | Host      | account_locked | password_expired |
+---------------+-----------+----------------+------------------+
| report_reader | localhost | N              | N                |
| shop_app      | 10.0.1.%  | N              | N                |
+---------------+-----------+----------------+------------------+
SQL
SELECT User, Host, account_locked, password_expired
FROM mysql.user
WHERE User IN ('shop_app', 'report_reader', 'api_worker');

DROP USER IF EXISTS 'api_worker'@'127.0.0.1';

يلخص الجدول المرجعي التالي أوامر إدارة حسابات المستخدمين والمصادقة في MySQL 8:

العملية الإداريةالصياغة القياسية في MySQL 8الهدف الأمني والعملي
إنشاء حسابCREATE USER IF NOT EXISTS 'u'@'host' IDENTIFIED BY 'pass';تخصيص هوية مستقلة مقيدة بالمضيف
تدوير كلمة المرورALTER USER 'u'@'host' IDENTIFIED BY 'new_pass';تحديث بصمة SHA-256 فوراً دون إيقاف الخادم
كلمة المرور المزدوجةALTER USER 'u'@'host' IDENTIFIED BY 'new' RETAIN CURRENT PASSWORD;تدوير كلمة المرور دون توقف خوادم التطبيق
قفل / فتح الحسابALTER USER 'u'@'host' ACCOUNT LOCK / UNLOCK;تعليق أو استعادة الدخول لحظياً
حذف الحسابDROP USER IF EXISTS 'u'@'host';إزالة الحسابات المنتهية من النظام بأمان

ملخص الدرس: تعلمت في هذا الدرس كيف يعرّف MySQL 8 هوية المستخدم والمضيف معاً، وكيفية إنشاء الحسابات بأمر CREATE USER، ومصادقة caching_sha2_password، وتدوير كلمات المرور وقفل الحسابات وحذفها.
الخطوة التالية والدرس القادم: انتقل إلى الدرس التالي لتعلّم منح وسحب الصلاحيات والأدوار عبر GRANT وREVOKE ومبدأ أقل الصلاحيات.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

يشكّل الجمع بين تحديد عنوان المضيف وأوامر CREATE USER ومصادقة caching_sha2_password وقفل الحسابات خط الدفاع الأول عن خادم MySQL 8. الخطوة التالية: انتقل الآن إلى درس «إدارة الصلاحيات والأدوار عبر GRANT و REVOKE ومبدأ أقل الصلاحيات في MySQL».

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 User Accounts حسابات المستخدمين
تعلّم إدارة حسابات المستخدمين والمصادقة في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
للمراجعة
02 User and Host Identity Pair هوية المستخدم والمضيف معاً
المفهوم الهندسي الأساسي والصياغة التطبيقية لقسم هوية المستخدم والمضيف معاً في خادم MySQL 8.4.
للمراجعة
03 Creating Accounts with CREATE USER إنشاء الحساب بـ CREATE USER
المفهوم الهندسي الأساسي والصياغة التطبيقية لقسم إنشاء الحساب بـ CREATE USER في خادم MySQL 8.4.
للمراجعة
04 Modern caching sha2 Authentication مصادقة التشفير القياسية الحديثة
المفهوم الهندسي الأساسي والصياغة التطبيقية لقسم مصادقة التشفير القياسية الحديثة في خادم MySQL 8.4.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 SHA-256 SHA-256
Secure Hash Algorithm 256-bit
خوارزمية التجزئة التشفيرية بطول 256 بت المعتمدة في إضافة المصادقة الافتراضية caching_sha2_password في MySQL 8.
للمراجعة
02 TLS TLS
Transport Layer Security
بروتوكول أمان طبقة النقل المشفر الذي يحمي مصادقة المستخدمين والبيانات المنقولة بين العميل وخادم MySQL.
للمراجعة
03 CIDR CIDR
Classless Inter-Domain Routing
تدوين الشبكات الفرعية الذي يُمثَّل في حقل Host داخل MySQL لتقييد الاتصال بنطاق عناوين IP محدد.
للمراجعة
04 DBA DBA
Database Administrator
مدير قواعد البيانات المسؤول عن إدارة الحسابات وسياسات الأمان والنسخ الاحتياطي وكفاءة الخادم.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. نفّذ جمل SQL الواردة في قسم هوية المستخدم والمضيف معاً داخل بيئة MySQL 8 المحلية وتحقق من المخرجات.

  2. جرّب الحالات الثلاث داخل محاكي إدارة حسابات المستخدمين والمصادقة في MySQL 8 في قسم إنشاء الحساب بـ CREATE USER وقارن سلوك المحرك.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

6أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي6 أسئلة تنتظرك
01

كيف يحدد خادم MySQL 8 هوية حساب المستخدم بشكل فريد داخل جدول النظام mysql.user؟

يجمع MySQL بين اسم المستخدم واسم المضيف معاً في زوج واحد بالصيغة 'user_name'@'host_name'.

02

في خادم MySQL 8، يُعامل الحسابان 'shop_app'@'localhost' و 'shop_app'@'10.0.1.50' كحسابين مستقلين تماماً.

صواب؛ اختلاف جزء المضيف (Host) يجعل كلاً منهما حساباً منفصلاً في جدول mysql.user.

03

ما إضافة المصادقة الافتراضية المعتمدة في خادم MySQL 8.0 و 8.4؟

تُعد إضافة caching_sha2_password هي المصادقة الافتراضية القياسية في MySQL 8.

04

أي أمر SQL يوقف قدرة الحساب على تسجيل الدخول مؤقتاً دون حذف الحساب من قاعدة البيانات؟

يقوم الأمر ALTER USER ... ACCOUNT LOCK بقفل الحساب فوراً مع الاحتفاظ ببياناته.

05

أي أمر SQL يحذف حساب مستخدم انتهت الحاجة إليه بأمان دون خطأ إذا لم يكن موجوداً؟

يحذف الأمر DROP USER IF EXISTS الحساب وبيانات مصادقته بأمان.

06

يحصل المستخدم الجديد فور إنشائه بالأمر CREATE USER على صلاحيات كاملة على جميع قواعد البيانات تلقائياً.

خطأ؛ يُنشأ الحساب الجديد بصلاحية USAGE فقط (أي تسجيل الدخول دون أي صلاحية قراءة أو تعديل على الجداول).