recent
أخبار ساخنة

شرح ضبط وتغيير وإعادة تعيين كلمات مرور المستخدم الـ root في MySQL أو MariaDB. بالخطوات

الصفحة الرئيسية
شرح ضبط وتغيير وإعادة تعيين كلمات مرور المستخدم الـ root  في  MySQL أو MariaDB. بالخطوات

نشرح هنا كيف يمكنك ضبط وتغيير وإعادة تعيين (إذا نسيت كلمة المرور) كلمات مرور المستخدم الـ root  في  MySQL أو MariaDB.

تحدث مرارًا وتكرارًا مشكلات مثل :

mysqladmin:  connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)

هذا الشرح متوافق مع جميع توزيعات Linux الرئيسية بما في ذلك. CentOS و Debian و Fedora و Ubuntu.

استخدم الأمر mysqladmin لتغيير كلمة مرور الـ Root.

شاهد خطوات  reset root password في Ububntu 20.10


الطريقة الأولى: إعداد كلمة مرور Root لأول مرة

إذا لم تقم أبدًا بتعيين كلمة مرور Root لـ MySQL  فلن يتطلب الخادم كلمة مرور على الإطلاق للاتصال كـ Root.
لإعداد كلمة مرور Root  لأول مرة ، استخدم الأمر mysqladmin في الـ shell:

mysqladmin -u root password newpass

إذا كنت تريد تغيير (أو تحديث) كلمة مرور root إلى كلمة المرور الجديدة newpass فأنت بحاجة إلى استخدام الأمر التالي:

mysqladmin -u root -p password newpass
Enter password:

إذا حصلت على النتيجة التالية

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

فاتبع التعليمات أدناه حول كيفية استرداد كلمة مرور MySQL الخاصة بك.

password في المثال أعلاه جزء من الأمر لا تستبدلها بكلمة المرور الخاصة بك. 
كلمة newpass هي كلمة المرور الجديدة.



من البدائل لاستخدام الأمر mysqladmin عند تعيين كلمة مرور root في  MySQL أو MariaDB للمرة الأولى استخدام الأمر mysql_secure_installation.

لن يطلب هذا الأمر كلمة مرور root  الخاصة بـ MySQL القديمة والجديدة فحسب بل سيفعل أيضًا بعض إعدادات الأمان الأخرى مثل تعطيل test database.

كيفية استخدام هذا الأمر:

mysql_secure_installation

قم بالإجابة عن الأسئلة كما هو موضح:


Change the root password? [Y/n] <-- y
New password: <-- Enter a new MySQL root password
Re-enter new password: <-- Repeat the MySQL root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y 

الإجابات المذكورة أعلاه هي مجرد أمثلة ولك مطلق الحرية في اختيار إعدادات أخرى.
فعلى سبيل المثال عندما تفضل الاحتفاظ بـ test databases أو تحتاج إلى remote access للمستخدم root.
ملاحظة: لا تحتاج إلى remote access لاستخدام PHPMyAdmin عن بُعد.



تغيير كلمة مرور MySQL للمستخدمين الآخرين


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

mysqladmin -u user-name -p password newpass

المتغيرات في هذا المثال هي:

user-name: اسم المستخدم الذي تريد تغيير كلمة المرور الخاصة به.
newpass: كلمة المرور الجديدة.
كلمة password ليست متغيرًا ، فلا تستبدلها.
سيطلب الأمرمنك كلمة المرور القديمة.



الطريقة الثانية - تحديث كلمة المرور أو تغييرها

يخزن MySQL أسماء المستخدمين وكلمات المرور في جدول المستخدم (user table) داخل قاعدة بيانات MySQL.
يمكنك تحديث كلمة المرور مباشرةً باستخدام الطريقة التالية لتحديث كلمات المرور أو تغييرها:

1) قم بتسجيل الدخول إلى خادم MySQL  واكتب الأمر التالي في الـ shell :

mysql -u root -p

2) استخدم قاعدة بيانات mysql (اكتب الأوامر في mysql> prompt):

mysql> use mysql;

3) تغيير كلمة المرور للمستخدم:
MySQL 5.7.5 والإصدارات الأقدم:

mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

MySQL 5.7.6 والإصدارات الأحدث

mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");

4) إعادة تحميل الصلاحيات:

mysql> flush privileges;
mysql> quit

هذه الطريقة تحتاج إلى استخدامها أثناء استخدام البرمجة النصية PHP أو Perl.

استعادة كلمة مرور root المفقودة  في MySQL 




يمكنك استعادة كلمة مرور خادم قاعدة بيانات MySQL باتباع الخطوات الخمس السهلة التالية:

1- أوقف خدمة الخادم (MySQL server process).

2- ابدأ عملية MySQL (mysqld) server/daemon باستخدام الخيار --skip-Grant-Tables حتى لا يطالب بكلمة مرور.

3-  اتصل بخادم MySQL باعتبارك المستخدم root .

4- قم بتعيين كلمة مرور root جديدة.

5- اخرج وأعد تشغيل خادم MySQL.

فيما يلي الأوامر التي تحتاج إلى كتابتها لكل خطوة (سجل الدخول باسم المستخدم root):

الخطوة رقم 1: إيقاف خدمة MySQL:

service mysql stop

ستحصل على النتيجة:

Stopping MySQL database server: mysqld.

الخطوة رقم 2: ابدأ تشغيل خادم MySQL بدون كلمة المرور:

mysqld_safe --skip-grant-tables &

ستحصل على النتيجة:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

الخطوة رقم 3: اتصل بخادم MySQL باستخدام MySQL client

mysql -u root

ستحصل على النتيجة:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 56299
Server version: 5.6.34-1 (Debian)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

الخطوة رقم 4: قم بتعيين كلمة مرور جديدة للمستخدم root  لـ MySQL:

MySQL 5.7.5 والإصدارات الأقدم

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

MySQL 5.7.6 والإصدارات الأحدث

mysql> use mysql;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("newpass");
mysql> flush privileges;
mysql> quit

الخطوة رقم 5: إيقاف خادم MySQL:

service mysql stop

ستحصل على النتيجة:

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

أو استخدم هذا الأمر لإيقاف MySQL إذا فشل الأمر أعلاه في إيقافه (يعتمد الأمر الذي يعمل على إصدار MySQL):

killall mysqld

قد تختلف النتيجة بناءً على Linux.
لا تقلق ما لم يظهر خطأ.
ابدأ تشغيل خادم MySQL واختبره:

service mysql start
mysql -u root -p
google-playkhamsatmostaqltradent