يهدف هذا الدليل إلى أن يكون مصدرًا ونقطة بداية لتشخيص واستكشاف مشاكل وإعدادات MySQL للتمهيد لحلها. سنتناول بعضًا من المشاكل التي يتعرّض لها كثيرون من مستخدمي MySQL ونوفّر إرشادات لكيفية تشخيصها وحلها. سيشتمل الدليل كذلك على روابط لمقالات من أكاديميّة حسوب ومن التوثيق الرسمي للاستفادة منها.
- كيف تعرض سجلّات الأخطاء وتشخّص الاستعلامات في MySQL
- كيف تسمح بالاتّصال عن بعد بقاعدة بيانات MySQL
- كيف تعالج انهيار خادوم MySQL
- كيف تصلح الجداول المعطوبة في MySQL
- كيف تشخّص أخطاء المقابس Sockets في MySQL
يُدير خادوم MySQL الاتّصالات القادمة إلى قاعدة البيانات اعتمادًا على ملفّ مقبس Socket، وهو نوعٌ خاصّ من الملفّات يسهّل التواصل بين عمليّات Processes مختلفة. يحمل الملفّ المقبس الخاصّ بخادوم MySQL اسمَ mysqld.sock
ويوجد عادةً - بالنسبة للخواديم العاملة بتوزيعة أوبنتو – في المجلّد /var/run/mysqld/
. تُنشئ خدمة MySQL هذا الملفّ تلقائيّا.
تتسبّب التعديلات على نظام التشغيل أو على إعدادات MySQL في عدم تمكّن MySQL من قراءة الملفّ المقبس، ممّا يمنع الوصول إلى قواعد البيانات على الخادوم. يظهر خطأ المقبس الشائع على النحو التالي:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
توجد بضعة أمور تتسبّب في الخطأ أعلاه، وخيّارات محدودة لإصلاحه.
أحد الأسباب الشائعة هي توقيف خدمة MySQL أو الإخفاق في تشغيلها؛ بمعنى أنّ الخدمة لم تستطع إنشاء الملفّ المقبس ابتداءً. حاول تشغيل الخدمة بالأداة systemctl
لمعرفة ما إذا كان هذا هو سبب ظهور الخطأ:
sudo systemctl start mysql
ثم حاول الوصول إلى سطر أوامر MySQL من جديد. تأكّد - إن استمرّ الخطأ في الظهور – من المسار الذي يبحث فيه MySQL عن الملفّ المقبس. يمكن معرفة هذا المسار من خلال ملفّ الإعداد mysqld.cnf
:
sudo nano /etc/mysql/mysql.conf.d/mysql.cnf
ابحث عن المُعامل socket
ضمن المقطع [mysqld]
من الملفّ. يبدو المقطع المذكور كالتالي:
. . . [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 . . .
أغلق الملفّ ثم تأكّد من وجود الملفّ mysqld.sock
بتنفيذ الأمر ls
على المسار الذي يتوقّع MySQL وجودَ الملفّ فيه:
ls -a /var/run/mysqld/
إذا كان الملفّ المقبس موجودًا فسيظهر في مُخرجات الأمر:
. .. mysqld.pid mysqld.sock mysqld.sock.lock
إذا لم يكن الملفّ موجودًا فربما يكون السبب هو أنّ MySQL يحاول إنشاءه دون أن تكون لديه الصلاحيّات المناسبة لذلك. يمكن التأكّد صحّة الصلاحيّات بتغيير ملكيّة المجلّد إلى المستخدم والمجموعة mysql
:
sudo chown mysql:mysql /var/run/mysqld/
ثم تأكّد بعد ذلك من أنّ المستخدم mysql
لديه الصلاحيّات المناسبة على المجلّد. تصلُح الصلاحيّات 755
لأغلب الحالات:
sudo chmod -R 755 /var/run/mysqld/
أخيرًا؛ أعد تشغيل MySQL لترى ما إذا كان يستطيع إنشاء الملفّ المقبس من جديد:
sudo systemctl restart mysql
ثم حاول الوصول إلى سطر أوامر MySQL. إن استمرّ خطأ المقبس في الظهور، فقد يشير ذلك إلى وجود مشكلة أعمق في خادوم MySQL، وفي هذه الحالة تجب مراجعة سجلّات الأخطاء بحثًا عن ما يقود إلى معرفة سبب المشكلة.
ترجمة – بتصرّف – للمقال How To Troubleshoot Socket Errors in MySQL لصاحبه Mark Drake.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.