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" فشل الخطأ:
"تم رفض الوصول للمستخدم" الجذر "@" المضيف المحلي "(باستخدام كلمة المرور: نعم)"
كيف يمكنني اصلاح هذا؟
-
افتح وتحرير
/etc/my.cnf
أو/etc/mysql/my.cnf
، حسب/etc/mysql/my.cnf
. -
أضف
skip-grant-tables
تحت[mysqld]
- أعد تشغيل Mysql
-
يجب أن تكون قادرًا على تسجيل الدخول إلى mysql الآن باستخدام الأمر أدناه
mysql -u root -p
-
تشغيل
mysql> flush privileges;
-
عيّن كلمة مرور جديدة بواسطة
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
- ارجع إلى /etc/my.cnf وأزل / أعلق / تخطي جداول المنح
- أعد تشغيل Mysql
-
الآن سوف تكون قادرًا على تسجيل الدخول باستخدام كلمة المرور الجديدة
mysql -u root -p
بالنسبة لمستخدمي نظام التشغيل Linux الجدد ، قد تكون هذه مهمة شاقة. اسمح لي بتحديث هذا باستخدام mysql 8 (أحدث إصدار متوفر الآن هو 8.0.12 كما في 12 سبتمبر 2018)
- افتح ملف التكوين "mysqld.cnf" على "/etc/mysql/mysql.conf.d/".
- أضف جداول تخطي المنح إلى السطر التالي من النص [mysql] واحفظها.
- أعد تشغيل خدمة mysql كـ "sudo service mysql restart". الآن mysql الخاص بك خالية من أي مصادقة.
- قم بالاتصال بعميل mysql (المعروف أيضًا باسم mysql-shell) باسم mysql -u root -p . لا توجد كلمة مرور لإدخالها حتى الآن.
- تشغيل sql امتيازات تدفق الأوامر ؛
- إعادة تعيين كلمة المرور الآن باسم ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'MyNewPassword'؛
- الآن دعنا نعود إلى الحالة الطبيعية ؛ قم بإزالة ذلك السطر "skip-grant-tables" من "mysqld.cnf" ثم أعد تشغيل الخدمة.
هذا هو.
بعد تجربة كل الإجابات الأخرى ، هذا ما نجح أخيرًا بالنسبة لي
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
لقد وجدت الإجابة في هذا المنشور: https://medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06
في منضدة عمل 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