كيفية إنشاء مستخدم جديد ومنح الأذونات في MySQL

0 الأسهم
0
0
0
0

مقدمة

MySQL هو نظام إدارة قواعد بيانات علائقية مفتوح المصدر. يُستخدم عادةً كجزء من حزمة LAMP (وهي اختصار لـ Linux وApache وMySQL وPHP)، وهو قاعدة البيانات مفتوحة المصدر الأكثر شيوعًا في العالم حتى كتابة هذه السطور. يشرح هذا الدليل كيفية إنشاء مستخدم MySQL جديد ومنحه الأذونات اللازمة لتنفيذ مجموعة متنوعة من الإجراءات.

المتطلبات الأساسية

لمتابعة هذا الدليل، ستحتاج إلى الوصول إلى قاعدة بيانات MySQL. يفترض هذا الدليل أن قاعدة البيانات مُثبّتة على خادم افتراضي خاص يعمل بنظام Ubuntu 20.04، مع العلم أن المبادئ الموضحة فيه تنطبق بغض النظر عن كيفية وصولك إلى قاعدة البيانات. إذا لم يكن لديك وصول إلى قاعدة بيانات MySQL وترغب في إعدادها بنفسك، يمكنك اتباع أحد أدلة تثبيت MySQL. وبغض النظر عن نظام التشغيل الأساسي لخادمك، عادةً ما تكون إجراءات إنشاء مستخدم MySQL جديد ومنحه الأذونات هي نفسها.

إنشاء مستخدم جديد

بعد التثبيت، يُنشئ MySQL حساب مستخدم جذر يُمكنك استخدامه لإدارة قاعدة البيانات. يتمتع هذا المستخدم بصلاحيات كاملة على خادم MySQL، أي أنه يتمتع بالتحكم الكامل في جميع قواعد البيانات والجداول والمستخدمين، إلخ. لذلك، يُفضل تجنب استخدام هذا الحساب خارج نطاق المهام الإدارية. تشرح هذه الخطوة كيفية استخدام حساب المستخدم الجذر في MySQL لإنشاء حساب مستخدم جديد ومنحه الصلاحيات اللازمة.

في أنظمة Ubuntu التي تعمل بنظام MySQL 5.7 (والإصدارات الأحدث)، تتم مصادقة مستخدم MySQL الجذر افتراضيًا باستخدام إضافة auth_socket، بدلاً من كلمة مرور. تتطلب هذه الإضافة أن يتطابق اسم مستخدم نظام التشغيل الذي يستدعي عميل MySQL مع اسم مستخدم MySQL المحدد في الأمر. هذا يعني أنه يجب عليك إضافة sudo قبل أمر mysql لاستدعائه بامتيازات مستخدم Ubuntu الجذر للوصول إلى مستخدم MySQL الجذر.

sudo mysql

إذا تم إعداد مستخدم MySQL الجذر لديك لمصادقة كلمة المرور، فستحتاج إلى استخدام أمر مختلف للوصول إلى واجهة MySQL. سيؤدي الأمر التالي إلى تشغيل عميل MySQL بصلاحيات المستخدم العادي، وستحصل على صلاحيات المسؤول على قاعدة البيانات بمجرد المصادقة باستخدام كلمة المرور الصحيحة:

mysql -u root -p

بمجرد وصولك إلى موجه MySQL، يمكنك إنشاء مستخدم جديد باستخدام العبارة إنشاء مستخدم إنشاء. تتبع هذه الصيغة العامة:

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

بعد إنشاء مستخدم حدد اسم المستخدم. يتبعه مباشرةً علامة @، ثم اسم المضيف الذي سيتصل منه هذا المستخدم. إذا كنت تنوي الوصول إلى هذا المستخدم محليًا فقط من خادم أوبونتو، يمكنك تحديد localhost. ليس من الضروري دائمًا وضع اسم المستخدم واسم المضيف بين علامتي اقتباس، ولكن القيام بذلك يساعد في تجنب الأخطاء.

عند اختيار مكون إضافي لمصادقة المستخدم، لديك عدة خيارات. المكون الإضافي مقبس المصادقة كما ذكرنا سابقًا، يُعد هذا مفيدًا لأنه يوفر أمانًا قويًا دون الحاجة إلى إدخال كلمة مرور من المستخدمين المُصادق عليهم للوصول إلى قاعدة البيانات. كما أنه يمنع الاتصالات عن بُعد، مما قد يُعقّد الأمور عند الحاجة إلى تفاعل التطبيقات الخارجية مع MySQL.

كبديل، يمكنك حذف جزء WITH authentication_plugin من بناء الجملة بالكامل لتمكين المستخدم من المصادقة باستخدام ملحق MySQL الافتراضي، caching_sha2_password. توصي وثائق MySQL بهذه الإضافة للمستخدمين الذين يرغبون في تسجيل الدخول بكلمة مرور نظرًا لميزاتها الأمنية القوية.

لإنشاء مستخدم يُصادق عليه باستخدام caching_sha2_password، شغّل الأمر التالي. تأكد من: سامي اختر كلمة مرور قوية لاسم المستخدم وكلمة المرور المفضلة لديك:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

هناك مشكلة معروفة في بعض إصدارات PHP تُسبب فشل caching_sha2_password. إذا كنت تخطط لاستخدام قاعدة البيانات هذه مع تطبيق PHP - مثل phpMyAdmin - فقد ترغب في إنشاء مستخدم يُصادق باستخدام امتداد mysql_native_password الأقدم، ولكنه لا يزال آمنًا:

CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

إذا لم تكن متأكدًا، فيمكنك دائمًا إنشاء مستخدم يتم مصادقة حسابه باستخدام caching_sha2_plugin ثم تغييره باستخدام هذا الأمر:

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

بعد إنشاء المستخدم الجديد، يمكنك منحه الامتيازات المناسبة.

منح أذونات المستخدم

الأمر العام لمنح امتيازات المستخدم هو كما يلي:

GRANT PRIVILEGE ON database.table TO 'username'@'host';

تحدد قيمة PRIVILEGE في هذا المثال الإجراءات المسموح للمستخدم بتنفيذها على قاعدة البيانات والجدول المحددين. يمكنك منح امتيازات متعددة للمستخدم في جملة واحدة بفصل كل امتياز بفاصلة. كما يمكنك منح امتيازات عامة للمستخدم بإدخال علامة النجمة (*) مكان اسم قاعدة البيانات والجدول. في SQL، تُستخدم علامات النجمة لتمثيل "جميع" قواعد البيانات أو الجداول.

للتوضيح، يمنح الأمر التالي المستخدم صلاحيات عامة لإنشاء وتعديل وحذف قواعد البيانات والجداول والمستخدمين، بالإضافة إلى إمكانية إدراج وتحديث وحذف البيانات من أي جدول على الخادم. كما يسمح للمستخدم بالاستعلام عن البيانات باستخدام: يختار البحث عن المفاتيح الخارجية باستخدام الكلمات الرئيسية مراجع إنشاء وتشغيل تدفق مع النقاط إعادة التحميل ومع ذلك، يجب عليك منح المستخدمين الأذونات التي يحتاجون إليها فقط، حتى تتمكن من تعديل امتيازات المستخدم حسب الحاجة.

يمكنك رؤية القائمة الكاملة للنقاط المتاحة في وثائق MySQL الرسمية ابحث عنه.

قم بتشغيل بيان GRANT هذا، مع استبدال Sammy باسم مستخدم MySQL الخاص بك، لمنح هذه الامتيازات للمستخدم الخاص بك:

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

لاحظ أن هذا البيان يتضمن أيضًا خيار WITH GRANT. يسمح هذا لمستخدم MySQL بمنح أي صلاحيات يملكها لمستخدمين آخرين على النظام.

قد يرغب بعض المستخدمين في منح مستخدم MySQL الخاص بهم جميع الامتيازات، مما يمنحهم امتيازات مستخدم فائق واسعة النطاق مماثلة لامتيازات مستخدم الجذر، مثل:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

لا ينبغي منح مثل هذه الامتيازات الواسعة بسهولة، حيث سيكون لدى أي شخص لديه حق الوصول إلى مستخدم MySQL هذا التحكم الكامل في كل قاعدة بيانات على الخادم.

تقترح العديد من الأدلة تشغيل أمر FLUSH PRIVILEGES فورًا بعد عبارة CREATE USER أو GRANT لإعادة تحميل جداول المنح للتأكد من تطبيق الامتيازات الجديدة:

FLUSH PRIVILEGES;

ومع ذلك، وفقا ل وثائق MySQL الرسميةعند تعديل جداول المنح بشكل غير مباشر باستخدام أمر إدارة حسابات مثل GRANT، تُحمّل قاعدة البيانات جداول المنح إلى الذاكرة فورًا، مما يعني أن أمر FLUSH PRIVILEGES غير ضروري في حالتنا. من ناحية أخرى، لن يكون لتنفيذه أي تأثير سلبي على النظام.

إذا كنت بحاجة إلى إلغاء ترخيص، فإن الهيكل يكون تقريبًا مثل منحه:

REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';

لاحظ أنه عند إلغاء الأذونات، يتطلب بناء الجملة أنه بدلاً من لالتي استخدمتها عند منح الأذونات، منيستخدم.

عن طريق تنفيذ الأمر منح العرض يمكنك التحقق من الأذونات الحالية للمستخدم:

SHOW GRANTS FOR 'username'@'host';

كما يمكنك استخدام قواعد البيانات مع يسقط حذف، يمكنك من يسقط لحذف مستخدم، استخدم:

DROP USER 'username'@'localhost';

بعد إنشاء مستخدم MySQL ومنحه الامتيازات، يمكنك الخروج من MySQL:

exit

في المستقبل، لتسجيل الدخول كمستخدم MySQL جديد، سوف تستخدم أمرًا مثل الأمر التالي:

mysql -u sammy -p

-p يتسبب في مطالبة عميل MySQL لك بكلمة مرور مستخدم MySQL للمصادقة.

نتيجة

باتباع هذا البرنامج التعليمي، تعلمت كيفية إضافة مستخدمين جدد ومنحهم صلاحيات متنوعة في قاعدة بيانات MySQL. من هنا، يمكنك مواصلة استكشاف وتجربة إعدادات صلاحيات مختلفة لمستخدم MySQL، أو قد ترغب في معرفة المزيد عن بعض إعدادات MySQL المتقدمة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً