إعادة تعيين كلمة مرور المستخدم «root» لقاعدة بيانات MySQL وقاعدة بيانات MariaDB

نشره جميل بيلوني في

mysql.png

مقدمة

قد يحدث أن تنسى كلمة المرور التي وضعتها لحسابك مهما كانت ذاكرتك جيِّدة أو تفقدها إن كنت من النوع الذي لا يحب الحفظ، فإذا ما نسيت أو فقدت كلمة مرور المستخدم «root» لقاعدة بيانات MySQL أو قاعدة بيانات MariaDB فلا تخف لأنَّك سوف تتعلم في هذه المقالة كيفيَّة إعادة تعيينها سواءً للإصدارات القديمة أو الحديثة.

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

تحتاج لإعادة تعيين كلمة مرور المستخدم «root» لقاعدة بيانات MySQL أو MariaDB الوصول إلى خادم قاعدة البيانات تلك بوساطة مستخدم يملك امتيازات الجذر في نظام تشغيل لينكس.

الخطوة الأولى: تحديد إصدار قاعدة البيانات

تأتي معظم توزيعات لينكس الحديثة محمَّلة بقاعدة بيانات MySQL أو قاعدة بيانات MariaDB، والتي تشتهر بأنها بديل كامل وشامل عن MySQL. تختلف الأوامر التي ستُستخدم لإعادة تعيين كلمة المرور بحسب نوع وإصدار قاعدة البيانات، ولمعرفة الإصدار الذي تستخدمه اكتب الأمر التالي:

$ mysql --version

إذا كانت قاعدة البيانات هي MySQL فستظهر لك النتيجة:

mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper

أمَّا إذا كانت MariaDB فستظهر لك النتيجة:

mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

احفظ نوع ورقم إصدار قاعدة البيانات التي تستخدمها لأنها ستلزمك لاحقًا.

الخطوة الثانية: إيقاف خادم قاعدة البيانات

يجب عليك لتغيير كلمة مرور المستخدم «root» إيقاف خادم قاعدة البيانات قبل البدء بأيِّ شيء، ولإيقاف خادم MySQL اكتب الأمر:

$ sudo systemctl stop mysql

أمَّا لإيقاف خادم MariaDB اكتب الأمر:

$ sudo systemctl stop mariadb

و يجب عليك بعد إيقاف خادم قاعدة البيانات أن تتصل به يدويًا لتغيير كلمة المرور.

الخطوة الثالثة: إعادة تشغيل خادم قاعدة البيانات مع إلغاء التحقق من أذونات المستخدمين

إذا شغَّلت قاعدة بيانات MySQL أو MariaDB دون تمكينها من الوصول إلى جداول الصلاحيات "grant tables"، وهي الجداول التي تحتوي على بيانات الامتيازات للمستخدمين، فإنك ستتمكَّن من الوصول إلى سطر أوامر قاعدة البيانات بامتيازات المستخدم الجذر ودون إدخال كلمة المرور الخاصَّة به. يجب أيضًا عدم السماح لقاعدة البيانات من الاتصال بالشبكة لمنع المستخدمين من الوصول إليها أثناء تغيير كلمة المرور حيث تهدِّد هذه العملية أمن قاعدة البيانات.

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

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

سيعمل الأمر السابق في الخلفية وستكمل أنت استخدام سطر الأوامر بشكل طبيعي. ستتصل الآن بقاعدة البيانات بوساطة حساب المستخدم «root» دون أن يُطلب منك إدخال كلمة المرور:

$ mysql -u root

ستجد أنَّه انتقلت إلى سطر أوامر قاعدة البيانات مباشرةً كما هو موضَّح:

MySQL prompt Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>


 

MariaDB prompt Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

لديك الآن صلاحيات المستخدم «root» لتغيير كلمة المرور.

الخطوة الرابعة: تغيير كلمة مرور المستخدم الجذر

الطريقة الأسهل لتغيير كلمة المرور في الإصدارات الحديثة لقاعدة بيانات MySQL هي باستخدام أمر "ALTER USER"، ولكن لن يعمل هذا الأمر بشكل صحيح لعدم توافر جداول الصلاحيات "grant tables"، لذلك اطلب من خادم قاعدة البيانات إعادة تحميل الجداول عبر الأمر:

mysql> FLUSH PRIVILEGES;

تستطيع الآن تغيير كلمة المرور ولكن هل تتذكر ما هو نوع وإصدار قاعدة البيانات لديك؟ إذا كانت قاعدة البيانات MySQL إصدار 5.7.6 والأحدث (5.7.7 و 5.7.8 ...إلخ) أو مع قاعدة بيانات MariaDB إصدار 10.1.20 والأحدث (10.1.21 و 10.2.0 ...إلخ) فاستخدم الأمر:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

أمَّا إذا كانت قاعدة بيانات MySQL إصدار 5.7.5 والأقدم (5.7.4 و 5.7.3 ...إلخ) أو قاعدة بيانات MariaDB إصدار 10.1.20 والأقدم (10.1.19 و 10.1.18 ...إلخ) فاستخدم الأمر:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

ضع كلمة مرورك الجديدة بدلًا من "new_password".

ملاحظة: إذا لم يعمل الأمر "ALTER USER" فلذلك دلالةٌ على وجود مشكلة كبيرة. بإمكانك حينئذ استخدام الأمر التالي لإعادة تعيين كلمة المرور:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

وبعد ذلك أعد تحميل جداول الصلاحيات "grant tables" كما تعلمت سابقًا.

وعليك في جميع الأحوال التأكد أنَّ الأمر السابق تم تنفيذه بنجاح عند ظهور الرسالة التالية:

Query OK, 0 rows affected (0.00 sec)

وبذلك تغيَّرت كلمة المرور، ويتوجب الآن إيقاف خادم قاعدة البيانات الذي شغَّلته يدويًا وإعادة تشغيله بشكل طبيعي.

الخطوة الخامسة: إعادة تشغيل خادم قاعدة البيانات

أوقف خادم قاعدة البيانات الذي شغلته يدويًا في الخطوة الثالثة عبر الأمر التالي، سيبحث هذا الأمر عن رقم التعريف للعملية التي تعمل ثمَّ يرسل إشارة لإنهائها "SIGTERM"، وللمزيد عن إدارة عمليات لينكس يمكنك قراءة هذه المقالة. استخدم مع قاعدة بيانات MySQL الأمر:

$ sudo kill `cat /var/run/mysqld/mysqld.pid`

أمَّا مع قاعدة بيانات MariaDB:

$ sudo kill `/var/run/mariadb/mariadb.pid`

أعد بعد ذلك تشغيل الخادم باستخدام systemctl، استخدم مع قاعدة بيانات MySQL:

$ sudo systemctl start mysql

أمَّا مع قاعدة بيانات MariaDB:

$ sudo systemctl start mariadb

تستطيع التأكد أنَّ كلمة مرور المستخدم «root» لقاعدة البيانات تغيرت بشكل صحيح بالدخول إلى قاعدة البيانات عبر الأمر:

$ mysql -u root -p

سيُطلب منك إدخال كلمة المرور بعد كتابة الأمر السابق، اكتب كلمة المرور الجديدة ويجب أن تتصل مع قاعدة البيانات كما هو متوقع.

الخاتمة

أعدنا تغيير كلمة مرور المستخدم الجذر بعد فقدانها واتصلنا من جديد مع قاعدة بيانات MySQL أو قاعدة بيانات MariaDB. تأكَّد أن كلمة المرور الجديدة التي اخترتها قوية بما يكفي واحفظها في مكان آمن بعيد عن الفقدان أو النسيان.


 

ترجمة -وبتصرُّف- للمقال How To Reset Your MySQL or MariaDB Root Password لصاحبه Mateusz Papiernik

رابط المقال: هنا