MySQL / دليل حلول تحريري

رفض الوصول: الحساب أم المضيف أم الإضافة أم الصلاحية؟

صنّف اتصال MySQL8.4 الفاشل قبل تغيير بيانات الدخول أوالصلاحيات.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى

قاعدة معرفة للقراءة فقط · بلا تعليقات عامة

تعرّف على الأعراض

قد تظهر ERROR 1045 (28000): Access denied أثناء الدخول. يهم سياق المستخدم والمضيف؛ وتعني using password: YES تقديم كلمة مرور فقط لا صحتها.

يشير نجاح الدخول ثم ERROR 1044 (42000) أو ERROR 1142 (42000) إلى مرحلة أخرى هي تخويل المخطط أوالعبارة. وقد تظهر أخطاء إضافة بعد الترقية.

افهم الأسباب المحتملة

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

سجل مرحلة الفشل

سجل رمز الخطأ وإصدار العميل والوجهة والنقل واسم الدخول وهل نجحت عبارة SQL. احجب الأسرار وسلاسل الاتصال. لا تثبت مشكلة الوجهة أوشهادة TLS خطأ منح الجداول. وعند فشل الدخول لا يمكن تشغيل SQL التالية عبر الاتصال الفاشل؛ استخدم تشخيصاً إدارياً مصرحاً قائماً.

افحص الحساب المطابق فعلياً

بعد نجاح دخول مصرح قارن هوية العميل بحساب فحص الصلاحيات والأدوار النشطة. فقد يُمنح الدور دون تفعيله. هذه أوامر فحص فقط وتتوقف نتائجها على الاتصال ولا تُنسخ إلى تقارير عامة.

sql فحص الهوية والتخويل
SELECT VERSION(),USER(),CURRENT_USER(),CURRENT_ROLE();
SHOW GRANTS FOR CURRENT_USER;

قد يختلف سياق USER و CURRENT_USER. حدد الإذن الضيق المطلوب قبل طلب تغيير؛ فنجاح المصادقة يستبعد فرضيات فشل الدخول وحده.

ليَفحص المسؤول صفوف المطابقة

يمكن للمسؤول المصرح فحص صفوف الحساب المعني دون اختيار بصمات كلمات المرور. تحقق من نطاق المضيف والقفل وتوافق الإضافة والخادم والموصل. قد يختلف تطابق مقبس localhost واتصال TCP بعيد؛ فلا تضف مضيفاً عاماً لإخفاء الخطأ.

sql فحص إداري محدود للحساب
SELECT User,Host,plugin,account_locked
FROM mysql.user WHERE User='lab_reporter' ORDER BY Host;

اسم الحساب الاصطناعي lab_reporter. يتطلب الاستعلام إذن بيانات الحسابات ويخص مسؤولاً مصرحاً. يستبعد authentication_string عمداً ولا يغير حساباً أوصلاحية.

طبق التصحيح الذي تدعمه الأدلة

للسر القديم اتبع التدوير المعتمد وحدّث مجمع الاتصالات. ولخطأ الوجهة أوالمضيف صحح التوجيه أوتعريف الحساب المحدود. يعطل MySQL8.4 افتراضياً mysql_native_password ويستخدم عادة caching_sha2_password؛ فضّل موصلاً حديثاً وترحيل حساب مدروساً بدلاً من تفعيل المصادقة القديمة عموماً. وللتخويل اطلب إذن العلاقة المفقود أوتفعيل الدور فقط.

أبق التحقق من النقل سليماً

يجب أن يحقق عميل TCP متطلبات النقل الآمن أوتبادل RSA الموثقة مع caching_sha2_password. تحقق من شهادة الخادم عبر الموصل ولا تعطل التحقق لتشخيص السر. تساعد SHOW SESSION STATUS LIKE 'Ssl_cipher' في فحص TLS ناجحة، بينما للمقبس المحلي سياق أمان مختلف.

تحقق من نجاح الإصلاح

أعد الاتصال بنفس حساب ونقل التطبيق ثم نفذ قراءة تدريب مصرحاً بها مثل SELECT id FROM mysql_course_lab.orders ORDER BY id LIMIT 1. أكد الحساب والدور والإذن؛ فنجاح المسؤول لا يثبت حساب التطبيق.

امنع تكرار المشكلة

  • احصر إصدارات الخادم والموصل واختبر التدوير وافصل حساب الترحيل عن التشغيل وأبق أقل منح مقيدة بالمضيف. راجع إضافات وأدوار MySQL و MariaDB منفصلة.

المراجع الرسمية