خطأ 2002(HY000): لا يمكن الاتصال بخادم MySQL المحلي من خلال socket '/var/run/mysqld/mysqld.sock'(2)




phpmyadmin lamp (20)

لقد قمت بتثبيت LAMP على Ubuntu 12.04 LTS (دقيقة Pangolin) ومن ثم تعيين كلمة مرور الجذر على phpMyAdmin . لقد نسيت كلمة المرور وأنا الآن غير قادر على تسجيل الدخول. عندما أحاول تغيير كلمة المرور من خلال المحطة ، أحصل على:

خطأ 2002 (HY000): لا يمكن الاتصال بخادم MySQL المحلي من خلال socket '/var/run/mysqld/mysqld.sock' (2)

كيف يمكنني اصلاح هذا؟ لا يمكنني فتح LAMP أو إزالته أو إعادة تثبيته.


أرى جميع هذه الإجابات ، ولكن لا أحد يقدم خيار إعادة تعيين كلمة المرور وليس هناك إجابة مقبولة . السؤال الحقيقي هو أنه نسيت كلمة المرور الخاصة به ، لذا فهو بحاجة إلى إعادة التعيين ، ولا يرى ما إذا كان يعمل أم لا (مثبت أم لا) لأن معظم هذه الإجابات تعني ضمنيا.

لإعادة تعيين كلمة المرور

اتبع هذه الخطوات (يمكن أن يكون مفيدًا إذا نسيت كلمة المرور حقًا ويمكنك تجربة ذلك في أي وقت ، حتى إذا لم تكن في الوضع الحالي):

  1. قم بإيقاف تشغيل mysql

    sudo /etc/init.d/mysql stop
    

    أو لإصدارات التوزيع الأخرى:

    sudo /etc/init.d/mysqld stop
    
  2. ابدأ MySQL في الوضع الآمن

    sudo mysqld_safe --skip-grant-tables &
    
  3. سجل الدخول إلى MySQL باستخدام الجذر

    mysql -uroot
    
  4. حدد قاعدة بيانات MySQL لاستخدامها

    use mysql;
    
  5. إعادة تعيين كلمة المرور

    update user set password=PASSWORD("mynewpassword") where User='root';
    
  6. مسح الامتيازات

    flush privileges;
    
  7. قم بإعادة تشغيل الخادم

    quit
    
  8. أوقف وأعد تشغيل الخادم مرة أخرى

    أوبونتو وديبيان:

    sudo /etc/init.d/mysql stop
    ...
    sudo /etc/init.d/mysql start
    

    على CentOS و Fedora و RHEL:

    sudo /etc/init.d/mysqld stop
    ...
    sudo /etc/init.d/mysqld start
    
  9. تسجيل الدخول باستخدام كلمة مرور جديدة

    mysql -u root -p
    
  10. اكتب كلمة المرور الجديدة وتمتع بالخادم مرة أخرى وكأنه لم يحدث شيء

وقد اتخذ هذا من إعادة تعيين كلمة مرور الجذر MySQL .

تحديث مأخوذ من تعليق @ Daniel أدناه:

في MySQL 5.7 ، تمت إزالة حقل كلمة المرور في حقل جدول mysql.user ، والآن اسم الحقل هو 'authentication_string' ، لذا يجب أن تكون الخطوة 5:

 update user set authentication_string=password('mynewpassword') where user='root';

أعتقد أنه عندما تحصل على الخطأ

خطأ 2002 (HY000): لا يمكن الاتصال بخادم MySQL المحلي من خلال socket '/var/lib/mysql/mysql.sock'

سأوصي أولاً بالتحقق مما إذا كان mysql يعمل ... معظم الوقت لن يتم تشغيله بشكل افتراضي. يمكنك التحقق من ذلك من خلال /etc/init.d/mysqld status .

إذا لم يكن قيد التشغيل ، فابدأ أولاً:

.../etc/init.d/mysqld start.

أراهن أنه سوف يعمل 110 ٪.


إذا كان التثبيت الخاص بك حديثًا ، يجب عليك تأكيد ما إذا كان التثبيت هو SERVER SERVER ... مثل mysql-server-5.5 ... ربما قمت بتثبيت فقط "mysql" .. هذا هو العميل فقط بدلاً من الخادم.


إذا كان لديك XAMPP مثبتًا على جهاز Linux ، فحاول نسخ ملف my.cnf من /opt/lampp/etc/my.cnf إلى /etc/my.cnf .

ثم ، قم بتشغيل mysql -u root مرة أخرى ... يجب أن يكون لديك الآن مأخذ الصحيح وتكون قادراً على تشغيل عميل MySQL.


إليكم ما نجح لي:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart

هذا يخلق وصلة.


افتح المحطة واكتب:

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

سيكون كلا العميل الأساسي لقاعدة بيانات MySQL وحزم MySQL Server هو نفس الإصدار 5.5. MySQL Client 5.5 و MySQL Server 5.5 هي الإصدارات "الأفضل" الحالية لهذه الحزم في Ubuntu 14.04 كما يحددها مشرفو الحزم.

إذا كنت تفضل تثبيت MySQL Client 5.6 و MySQL Server 5.6 ، فيمكنك أيضًا العثور على حزم mysql-client-core-5.6 و mysql-server-5.6 في مركز برامج أوبونتو. الشيء المهم هو أن الأرقام إصدار العميل والخادم تطابق في كلتا الحالتين.

هذا العمل بالنسبة لي.


بدلا من استخدام مضيف محلي:

mysql -u myuser -pmypassword -h localhost mydatabase

استخدم 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(لاحظ أيضًا ، لا توجد مسافة بين -p و mypassword)

استمتع :)


بطريقة ما لم تقم عملية خادم MySQL بإنشاء المقبس ، أو العميل يبحث عن المقبس في المكان الخطأ.

سيكون اقتراحي الأول هو التحقق مما إذا كان خادم MySQL قيد التشغيل. قد يكون الاقتراح الثاني ، هو خادم MySQL يعمل على مضيف آخر؟ إذا كان الأمر كذلك ، أضف علامة -h <hostname> إلى عميل MySQL في الجهاز.

إذا كان MySQL يعمل بالفعل ، وتشغيله محليا ، تحقق من ملف my.cnf . يجب أن يكون هناك خط مثل

socket = /var/run/mysqld/mysqld.sock

تحقق مما إذا كان ذلك يتطابق مع موقع المقبس الذي أشرت إليه في مشاركتك.

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


تحقق مما إذا كان لديك الحقوق الصحيحة:

sudo chmod 755 /var/lib/mysql/mysql

كنت أعاني من نفس المشاكل وعملت لي. بعد القيام بذلك ، تمكنت من تشغيل MySQL.


تحقق من المعلمة "bind-adress" .

عدا ذلك ، حاول استخدام الأمر:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h للمضيف 127.0.0.1 ، أي المضيف المحلي

  • -P (لاحظ -P كأحرف كبيرة) للمنفذ 2206 ، أي المنفذ الافتراضي لـ MySQL


حصلت على هذه المشكلة أيضًا ، لكنني فعلت:

sudo service mysql restart 

عملت معي.


على خادم ديبيان جيسي ، كان حل عملي هو ببساطة القيام به

service mysql restart
service mysql reload

كمستخدم الجذر


في حالتي عملت من خلال القيام ببعض البحث والتطوير:

أنا قادر على الاتصال باستخدام MySQL

root-debian#mysql -h 127.0.0.1 -u root -p

ولكنها لا تعمل مع mysql -u root -p .

لم أجد أي bind-address في my.cnf . لذلك أنا outcommented المعلمة socket=/var/lib/mysql/mysqld.sock في my.cnf الذي تسبب لي مشكلة مع تسجيل الدخول.

بعد إعادة تشغيل الخدمة ، سارت الأمور على ما يرام:

[email protected]:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)

في حالتي كان القرص ممتلئًا ولم يعد ممكناً بدء تشغيل mysqld.

حاول إعادة تشغيل خدمة mysql.

إعادة تشغيل الخلية

أو

توقف خدمة الخلية

بدء خدمة الخلية

إذا لم تتعرف على أمر "stop" ، فمن المؤكد أنها مساحة القرص. يجب عليك تخصيص بعض المساحة في قسم mysql أو تخصيص القرص.

تحقق من مساحة القرص مع

مدافع -h


كان لدي مشكلة مماثلة. لن يبدأ mysql:

sudo service mysql start
start: Job failed to start

إذا عطلت apparmor:

sudo aa-complain /etc/apparmor.d/*

ذهبت المشكلة بعيدا. كانت المشكلة أن mysqld كانت تحاول الوصول إلى / run/mysqld/mysqld.sock لكن ملف تعريف apparmor أعطى الإذن فقط لـ /var/run/mysqld/mysqld.sock (/ var / run مرتبط إلى / run ، لذلك هذه في الواقع نفس الشيء). غير متأكد من أن mysqld لا تستخدم مسار var لأن هذا هو ما تم ضبطه في جميع ملفات التهيئة ، ولكن يمكنك حل المشكلة عن طريق إضافة ما يلي إلى /etc/apparmor.d/usr.sbin.mysqld

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,

كان لي نفس القضية. يحدث هذا أحيانًا إذا تم رفض خدمة MySQL.

لذلك عليك أن تبدأ:

sudo service mysql start

لقد أصلحت هذه المشكلة عن طريق تنفيذ الأمر التالي:

mysql.server start

وإذا كنت تستخدم نظام التشغيل mac واستخدمت المشروب لتثبيت mysql ، فما عليك سوى استخدام:

brew services start mysql

لقد جربت الخطوات التالية:

  1. تسجيل الدخول super user sudo أو استخدام sudo
  2. افتح /etc/mysql/my.cnf باستخدام gedit
  3. ابحث عن bind-address ، وقم بتغيير قيمته إلى عنوان IP الخاص بجهاز مضيف خادم قاعدة البيانات. بالنسبة لي ، كان localhost أو 127.0.0.1
  4. أحفظ وأغلق الملف.
  5. أعود إلى محطة وتنفيذ sudo service mysql start

وعملت لي.


من خلال التجربة ، أقول إنك بحاجة إلى التحقق من تشغيل الخادم أولاً ثم محاولة تكوين MySQL. الحل الأخير هو إعادة تثبيت MySQL.


لقد واجهت هذه المشكلة وحلتها عن طريق تركيب mysql-server ، لذا تأكد من أنك قمت بتثبيت mysql-server ، وليس mysql-client أو أي شيء آخر.

يعني هذا الخطأ أن الملف /var/run/mysqld/mysqld.sock غير موجود ، إذا لم تقم بتثبيت mysql-server ، فلم يكن الملف موجودًا. ولكن إذا كان mysql-server مثبتًا بالفعل قيد التشغيل ، فأنت بحاجة إلى التحقق من ملفات التكوين.

ملفات التهيئة هي:

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

في /etc/my.cnf ، قد يكون تكوين ملف مأخذ التوصيل /tmp/mysql.sock وفي /etc/mysql/my.cnf قد يكون تكوين ملف مأخذ التوصيل /var/run/mysqld/mysqld.sock . لذلك ، قم بإزالة أو إعادة تسمية /etc/mysql/my.cnf ، دع mysql تستخدم /etc/my.cnf ، ثم قد يتم حل المشكلة.





mysql-error-2002