يهدف هذا الدليل إلى أن يكون مصدرًا ونقطة بداية لتشخيص واستكشاف مشاكل وإعدادات MySQL للتمهيد لحلها. سنتناول بعضًا من المشاكل التي يتعرّض لها كثيرون من مستخدمي MySQL ونوفّر إرشادات لكيفية تشخيصها وحلها. سيشتمل الدليل كذلك على روابط لمقالات من أكاديميّة حسوب ومن التوثيق الرسمي للاستفادة منها.
- كيف تعرض سجلّات الأخطاء وتشخّص الاستعلامات في MySQL
- كيف تسمح بالاتّصال عن بعد بقاعدة بيانات MySQL
- كيف تعالج انهيار خادوم MySQL
- كيف تصلح الجداول المعطوبة في MySQL
- كيف تشخّص أخطاء المقابس Sockets في MySQL
تبدأ الكثير من المواقع والتطبيقات بوضع خادوم الويب وقاعدة البيانات على نفس النظام؛ إلّا أنّ هذا الإعداد يصبح مع الوقت ثقيلًا وغير قابل للتوسيع.. من الشائع التغلّب على هذا الإشكال بفصل الوظيفتيْن بضبط قاعدة بيانات منفصلة ممّا يسمح لخادوم الوِيب وقاعدة البيانات بالنموّ على الأجهزة الخاصّة بها، كلّ حسب حاجته. يعدّ الإعداد المبدئيّ لـ MySQL الذي لا يسمح سوى بالاتّصالات القادمة من نفس الجهاز، وبالتالي يمنع الاتّصالات القادمة من نظام آخر، أحد المشاكل الشائعة التي يواجهها المستخدمون أثناء محاولة إعداد الوصول إلى MySQL عن بعد. يمكن تعديل السلوك المبدئيّ لـ MySQL بتحرير الملف mysqld.cnf
:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
انتقل إلى السطر الذي يبدأ بالتوجيه bind-address
. يبدو الملفّ على النحو التالي:
. . . lc-messages-dir = /usr/share/mysql skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 . . .
يأخذ التوجيه مبدئيًّا القيمة 127.0.0.1
، ممّا يعني أنّ الخادوم سيبحث عن الاتّصالات المحليّة فقط. ستحتاج لتعديل هذه القيمة لتكون عنوان IP خارجي (عنوان الجهاز الذي تريد التواصل معه). كما يمكن استخدام حرف بدل (Wildcard) لأغراض التشخيص والبحث عن الأخطاء. مثلًا: *
، أو ::
، أو 0.0.0.0
:
. . . lc-messages-dir = /usr/share/mysql skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 0.0.0.0 . . .
ملحوظة: لا يحتوي الملف mysqld.cnf
في الإصدار 8 وما بعده من MySQL – مبدئيًّا – على التوجيه bind-address
؛ لذا تجب إضافة التوجيه أسفل آخر سطر من الملفّ على النحو التالي:
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql log-error = /var/log/mysql/error.log bind-address = 0.0.0.0
احفظ الملفّ بعد تعديله، ثم أغلقه وأعد تشغيل خدمة MySQL:
sudo systemctl restart mysql
حاول بعد ذلك الوصول إلى قاعدة البيانات من جهاز آخر كما يلي (حيث database_server_ip
عنوان IP الخاص بخادوم قاعدة البيانات):
mysql -u user -h database_server_ip -p
إن استطعت الاتّصال بقاعدة البيانات، فهذا يؤكّد أن التوجيه bind-address
كان السبب في تعذّر الاتّصال عن بعد بقاعدة البيانات. يُرجى ملاحظة أن القيمة 0.0.0.0
غير آمنة وتتيح الاتّصال بقاعدة البيانات من جميع عناوين IP. أمّا إن لم تستطع الاتّصال بقاعدة البيانات بعد ضبط إعداد bind-address
، فهذا يعني أن السبب أمر آخر. قد ترغب - في الحالتين – في التعرّف على كيفيّة إعداد اتّصال بعيد أكثر أمانًا، والتي يشرحها المقال كيفية إعداد قاعدة بيانات بعيدة لتحسين أداء موقع يستخدِم MySQL.
ترجمة – بتصرّف – للمقال How To Allow Remote Access to MySQ لصاحبه Mark Drake.
اقرأ أيضًا
- المقال التالي: كيف تعالج انهيار خادوم MySQL
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.