1. خطأ: المضيف ‘xxx.xx.xxx.xxx’ غير مسموح له بالاتصال بخادم MySQL هذا
السبب
تشير هذه الرسالة إلى أن خادم MySQL لا يسمح للمضيف أو المستخدم المحدد بالوصول إلى قاعدة البيانات. وعادة ما يكون ذلك بسبب عدم كفاية الصلاحيات الممنوحة للمستخدم أو المضيف العميل.
الحل
لحل هذه المشكلة، قم بمنح الصلاحيات المطلوبة للمستخدم من سطر أوامر MySQL:
mysql> USE mysql;
mysql> GRANT ALL ON *.* TO 'urUser'@'[urhostname]' IDENTIFIED BY 'urpassword';
mysql> FLUSH PRIVILEGES;
- استبدل
urUser
وurpassword
باسم المستخدم وكلمة المرور الفعليين لك. - استبدل
[urhostname]
باسم المضيف أو عنوان IP للعميل الذي يحاول الاتصال.
إذا استمرت المشكلة، تحقق من أن الشبكات مفعلة على خادم MySQL. بالنسبة لإصدارات MySQL الأحدث، استخدم أداة تكوين مثيل خادم MySQL لتمكين الشبكات عبر TCP/IP.
- تأكد من أن خيار الشبكات عبر TCP/IP مفعل.
- حدد المنفذ (الافتراضي هو 3306) وأنشئ استثناءً لجدار الحماية لهذا المنفذ.
2. خطأ: غير قادر على الاتصال بأي من المضيفين المحددين
السبب
يمكن أن يحدث هذا الخطأ العام لعدة أسباب، بما في ذلك تكوين الخادم بشكل غير صحيح أو إعدادات الشبكة غير الصحيحة.
الحل
جرّب الخطوات التالية لحل المشكلة:
1. تحقق من أن خادم MySQL يعمل
- على Windows، تأكد من أن خدمة MySQL تعمل.
- على نظام Linux، قم بفحص حالة الخادم باستخدام:
MySQL
systemctl status mysql
2. تمكين شبكة TCP/IP
- افتح ملف تكوين MySQL (عادة ما يكون اسمه
my.ini
أوmy.cnf
). - تأكد من أن السطر
skip-networking
معلق أو تمت إزالته. - أعد تشغيل خادم MySQL بعد إجراء التغييرات.
3. تحقق من رقم المنفذ
- يعمل خوادم MySQL عادة على المنفذ 3306.
- تحقق من رقم المنفذ في ملف تكوين MySQL (
my.ini
أوmy.cnf
).
4. قواعد جدار الحماية
- تأكد من عدم منع جدار الحماية الخاص بك لمنفذ MySQL. أضف استثناء للمنفذ 3306 إذا لزم الأمر.
3. خطأ: تم رفض الوصول للمستخدم ‘اسم المستخدم’@’اسم المضيف’ (باستخدام كلمة المرور: نعم)
السبب
يتم تسبب هذا الخطأ عادة ببيانات تسجيل دخول غير صحيحة، مثل اسم مستخدم أو كلمة مرور خاطئة.
الحل
تحقق مرتين من اسم المستخدم وكلمة المرور التي تستخدمها. تأكد من:
- يتطابق اسم المستخدم وكلمة المرور مع تلك المحددة في MySQL.
- تم منح المستخدم الوصول إلى قاعدة البيانات أو المضيف المحدد.
MySQL
GRANT ALL ON dbName.* TO 'UserName'@'HostName' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
استبدل dbName
وUserName
وHostName
وpassword
بأسماء قاعدة البيانات الفعلية واسم المستخدم واسم المضيف وكلمة المرور الخاصة بك.
4. خطأ: العميل لا يدعم بروتوكول المصادقة المطلوب من قبل الخادم؛ اعتبر ترقية عميل MySQL
السبب
هذا الخطأ شائع عند الاتصال بـ MySQL 8.0، حيث يستخدم بروتوكول مصادقة جديد يسمى caching_sha2_password. قد لا تدعم عملاء MySQL أو الأدوات القديمة هذا البروتوكول.
الحل
الخيار 1: ترقية عميلك
قم بترقية عميل MySQL أو الأداة الخاصة بك إلى أحدث إصدار. على سبيل المثال، إذا كنت تستخدم Data Loader، قم بالترقية إلى الإصدار 4.9 أو أحدث، والذي يدعم بروتوكول المصادقة الأحدث.
الخيار 2: حل بديل للعملاء الأقدم
إذا لم تتمكن من ترقية عميلك، اتبع هذه الخطوات لإنشاء مستخدم متوافق في MySQL 8.0:
1. إنشاء مستخدم جديد.
mysql> CREATE USER 'user1'@'localhost' IDENTIFIED BY 'passxxx';
2. منح الامتيازات المطلوبة.
mysql> GRANT ALL ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'passxxx';
3. تغيير طريقة المصادقة.
mysql> ALTER USER 'user1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'passxxx';
هذا الأمر يعيد طريقة مصادقة المستخدم إلى بروتوكول mysql_native_password
القديم، والذي يتوافق مع العملاء الأقدم.
يمكنك الآن استخدام هذا المستخدم (user1
) للاتصال بـ MySQL 8.0 باستخدام أدوات أو مكتبات أقدم.
استكشاف الأخطاء وإصلاحها مشكلات الاتصال بـ MySQL غالبًا ما يتطلب معالجة إعدادات التكوين، وأذونات المستخدم، أو التوافق بين العميل والخادم. من خلال اتباع الحلول الموضحة أعلاه، يمكنك حل الأخطاء الشائعة مثل رفض الأذونات، أو سوء تكوين المضيفين، أو عدم تطابق البروتوكولات.
لإدارة قاعدة البيانات بشكل مستمر، تأكد من تحديث خادم MySQL والأدوات الخاصة بك، واستعرض أذونات المستخدم وإعدادات الشبكة بشكل دوري لتجنب مشكلات الاتصال المستقبلية.
Source:
https://dzone.com/articles/troubleshooting-mysql-connection-issues