how - php mysql شرح




خطأ MySQL:: "تم رفض الوصول للمستخدم" الجذر "@" المضيف المحلي " (7)

لمستخدمي Ubuntu / Debian

قم بتشغيل ما يلي للاتصال root (بدون أي كلمة مرور)

sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf

إذا كنت لا ترغب في إضافة --defaults-file كل مرة تريد الاتصال root ، فيمكنك نسخ /etc/mysql/debian.cnf إلى الدليل الرئيسي الخاص بك:

sudo cp /etc/mysql/debian.cnf ~/.my.cnf

وثم:

sudo mysql

$ ./mysqladmin -u root -p ' redacted '
أدخل كلمة المرور:

mysqladmin: الاتصال بالخادم على "localhost" فشل الخطأ:
"تم رفض الوصول للمستخدم" الجذر "@" المضيف المحلي "(باستخدام كلمة المرور: نعم)"

كيف يمكنني اصلاح هذا؟


  1. افتح وتحرير /etc/my.cnf أو /etc/mysql/my.cnf ، حسب /etc/mysql/my.cnf .
  2. أضف skip-grant-tables تحت [mysqld]
  3. أعد تشغيل Mysql
  4. يجب أن تكون قادرًا على تسجيل الدخول إلى mysql الآن باستخدام الأمر أدناه mysql -u root -p
  5. تشغيل mysql> flush privileges;
  6. عيّن كلمة مرور جديدة بواسطة ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
  7. ارجع إلى /etc/my.cnf وأزل / أعلق / تخطي جداول المنح
  8. أعد تشغيل Mysql
  9. الآن سوف تكون قادرًا على تسجيل الدخول باستخدام كلمة المرور الجديدة mysql -u root -p

بالنسبة لمستخدمي نظام التشغيل Linux الجدد ، قد تكون هذه مهمة شاقة. اسمح لي بتحديث هذا باستخدام mysql 8 (أحدث إصدار متوفر الآن هو 8.0.12 كما في 12 سبتمبر 2018)

  1. افتح ملف التكوين "mysqld.cnf" على "/etc/mysql/mysql.conf.d/".
  2. أضف جداول تخطي المنح إلى السطر التالي من النص [mysql] واحفظها.
  3. أعد تشغيل خدمة mysql كـ "sudo service mysql restart". الآن mysql الخاص بك خالية من أي مصادقة.
  4. قم بالاتصال بعميل mysql (المعروف أيضًا باسم mysql-shell) باسم mysql -u root -p . لا توجد كلمة مرور لإدخالها حتى الآن.
  5. تشغيل sql امتيازات تدفق الأوامر ؛
  6. إعادة تعيين كلمة المرور الآن باسم ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'MyNewPassword'؛
  7. الآن دعنا نعود إلى الحالة الطبيعية ؛ قم بإزالة ذلك السطر "skip-grant-tables" من "mysqld.cnf" ثم أعد تشغيل الخدمة.

هذا هو.



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


كانت جميع الحلول التي وجدتها أكثر تعقيدًا من اللازم ولم يعمل أي منها من أجلي. هنا هو الحل الذي حل مشكلتي. لا حاجة لإعادة تشغيل mysqld أو تشغيله بامتيازات خاصة.

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

باستخدام استعلام واحد ، نقوم بتغيير auth_plugin إلى mysql_native_password وتعيين كلمة مرور الجذر إلى الجذر (لا تتردد في تغييرها في الاستعلام)

الآن يجب أن تكون قادرًا على تسجيل الدخول باستخدام الجذر. يمكن الاطلاع على مزيد من المعلومات في وثائق mysql

(الخروج من وحدة mysql باستخدام Ctrl + D أو عن طريق كتابة exit )


لقد فعلت ذلك لتعيين كلمة مرور الجذر الخاصة بي في الإعداد الأولي لـ MySQL في OSx. فتح محطة.

sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'

أغلق المحطة وافتح محطة جديدة. وعملت ما يلي في لينكس ، لتعيين كلمة مرور الجذر.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables

(sudo mysqld_safe - skip-grant-tables: لم ينجح هذا الأمر بالنسبة لي في المرة الأولى. لكن المحاولة الثانية كانت ناجحة.)

ثم تسجيل الدخول إلى الخلية

mysql -u root

FLUSH PRIVILEGES;

الآن قم بتغيير كلمة المرور:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

أعد تشغيل الخلية:

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start




database-connection