إصلاح: psql: تعذر الاتصال بالخادم: لا يوجد مثل هذا الملف أو الدليل



جرب أداة القضاء على المشاكل

تروج PostgreSQL لنفسها على أنها أكثر منصات تطبيقات قواعد البيانات مفتوحة المصدر تقدمًا ، ولدى دبيان لينكس بالتأكيد الكثير من الحزم التي تجعله أكثر تعقيدًا. يمكنك أيضًا العثور على عدد كبير من الحزم لـ PostgreSQL إذا كنت تعمل مع Ubuntu Server أو أي من دورات Ubuntu المختلفة ، نظرًا لأنها تستند إلى جوهر Debian. هذا المستوى من التعقيد والتطوير يجعل تحذيرات 'تعذر الاتصال بالخادم' و 'لا يوجد مثل هذا الملف أو الدليل' أكثر إزعاجًا.



لحسن الحظ ، عادة ما تكون هذه حالات بسيطة من مشكلات الأذونات التي تسببها حقيقة أن PostgreSQL تريد مستخدمًا يُدعى postgres للاحتفاظ بهذه الأدلة. باستخدام خدعة سطر أوامر بسيطة ، يمكنك إصلاح هذا على الفور تقريبًا. ستحتاج إلى إجراء بعض الفحوصات التشخيصية الأساسية مسبقًا ، على الرغم من ذلك ، فقط للتأكد من أن هذه هي المشكلة التي تواجهها بالفعل.



إصلاح PostgreSQL لا يمكنه الاتصال بأخطاء الخادم

أولاً ، حاول إعادة تشغيل نظام PostgreSQL يدويًا. أحيانًا يكون هذا كافيًا لإصلاح الأشياء ، وإذا لم يكن الأمر كذلك ، فستتلقى على الأقل رسالة خطأ للعمل من خلالها. على الأرجح ، يمكنك ببساطة إعادة تشغيل النظام عن طريق إصدار الأمر psql كمستخدم postgres.



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

تحقق من حالة الخدمة إذا تلقيت هذه الرسالة للتأكد من تحميل الوحدات. يجب أن يكونوا كذلك ، ولكن إذا لم يكونوا كذلك ، فقد ترغب في إعادة التشغيل. إذا تلقيت رسالة نصها 'مُحمّل: محمّل (/lib/systemd/system/postgresql.service ؛ ممكّن)' ، فهذا يعني أنها قيد التشغيل. محاولة إعادة تشغيل sudo service postgresql فقط للقيام بإعادة تشغيل قصيرة ومعرفة ما إذا كان ذلك يصحح أي شيء. عادة لا يكون الأمر كذلك ، ولكن قد يكون من المفيد المحاولة حسب ذلك.




بافتراض أن ذلك لم يساعد ، ألق نظرة داخل سجل PostgreSQL للبحث عن الأخطاء. في الحالة غير المحتملة التي تجد فيها شيئًا عن أخطاء الحزمة ، فقد تفقد إحدى وحدات SQL النمطية. هذا ليس عادة سبب هذه المشاكل ، ولكن بالتأكيد لن يؤذي إلقاء نظرة على الأقل. على الأرجح ، ستصادف شيئًا يحذرك من أن 'الأذونات يجب أن تكون u = rwx (0700)' و

أن 'دليل البيانات' /var/lib/postgresql/9.6/main 'لديه وصول جماعي أو عالمي' ، على الرغم من أنك قد ترى رقم إصدار مختلفًا اعتمادًا على خادم SQL الذي تستخدمه.

هذا لأن دبيان والتوزيعات المماثلة تتوقع أن يتحكم مستخدم ومجموعة postgres في هذه المجلدات بأذونات 0700 وجميع الملفات من خلال أذونات 0600 من أجل الأمان. كل ما عليك فعله هو تشغيل الأمر التالي في الجهاز لإصلاح الأذونات:

sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX ، go = /var/lib/postgresql/9.6/

ضع في اعتبارك أنه يجب أن تكون أحرف X كبيرة وليست الأحرف الصغيرة الأكثر شيوعًا التي ربما تكون أكثر دراية بها نظرًا للطريقة المحددة التي تريد تعيين خيارات أذونات الملفات هذه. بينما تحتاج إلى الوصول إلى الجذر للقيام بذلك ، يجب أن يكون تضمين علامتي sudo أكثر من كافٍ لمنح نفسك الأذونات المناسبة عند التشغيل كمستخدم عادي. هذا مهم لأن Ubuntu وتطبيقات Linux المختلفة انفصلت عن Ubuntu لتجزئة حساب الجذر الرئيسي ، لذا عليك القيام بالأشياء بهذه الطريقة.

بمجرد انتهاء هذا الأمر ، يمكنك إعادة تشغيل الخدمة مرة أخرى عن طريق إعادة تشغيل sudo service postgresql من المحطة ويجب ألا يكون لديك أي أخطاء هذه المرة. إذا كنت تريد إلقاء نظرة على السجل ، فمن المفترض ألا تكون هذه التحذيرات المتعلقة بمشاكل الأذونات موجودة أيضًا.

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

3 دقائق للقراءة