Betulkan: psql: tidak dapat menyambung ke pelayan: Tidak ada fail atau direktori seperti itu



Cuba Instrumen Kami Untuk Menghapuskan Masalah

PostgreSQL mempromosikan dirinya sebagai platform aplikasi pangkalan data sumber terbuka yang paling maju, dan Debian Linux tentunya mempunyai banyak pakej yang menjadikannya lebih kompleks. Anda juga dapat mencari banyak paket untuk PostgreSQL jika anda bekerja dengan Ubuntu Server atau salah satu dari pelbagai putaran Ubuntu, kerana ia berdasarkan inti Debian. Tahap kerumitan dan pengembangan ini membuat peringatan 'tidak dapat dihubungkan ke pelayan' dan 'tidak ada fail atau direktori seperti itu' yang jauh lebih menjengkelkan.



Nasib baik, ini biasanya merupakan kes masalah kebenaran yang disebabkan oleh kenyataan bahawa PostgreSQL mahu pengguna bernama postgres menyimpan direktori ini. Dengan menggunakan helah baris perintah yang mudah, anda boleh memperbaikinya dengan serta-merta. Anda pasti perlu menjalani beberapa pemeriksaan diagnostik asas terlebih dahulu, hanya untuk memastikan bahawa ini sebenarnya masalah yang anda hadapi.



Memperbaiki PostgreSQL Tidak Dapat Menyambung ke Kesalahan Pelayan

Pertama, cuba mulakan semula sistem PostgreSQL secara manual. Kadang-kadang ini cukup untuk menyelesaikan masalah, dan jika tidak, anda sekurang-kurangnya akan mendapat mesej ralat untuk bekerja. Kemungkinan besar, anda hanya memulakan semula sistem dengan mengeluarkan perintah psql sebagai pengguna postgres.



Anda mungkin mendapati bahawa ini membersihkan semuanya. Jika tidak, anda mungkin mendapat baris yang berbunyi 'psql: tidak dapat menyambung ke pelayan: Tidak ada fail atau direktori seperti itu', yang bermaksud anda menghadapi masalah kebenaran. Sekiranya anda menerima mesej ralat ini, anda juga akan mendapat beberapa teks yang lain.

Periksa status perkhidmatan jika anda mendapat mesej ini untuk memastikan modul dimuat. Mereka semestinya, tetapi jika tidak, anda mungkin mahu memulakan semula. Sekiranya anda mendapat mesej yang berbunyi 'Loaded: Load (/lib/systemd/system/postgresql.service; enabled)', maka mereka sedang berjalan. Cuba perkhidmatan sudo mulakan semula postgresql hanya untuk memulakan semula sebentar dan melihat apakah itu membetulkan apa-apa. Biasanya tidak, tetapi mungkin patut dicuba bergantung.




Dengan andaian bahawa ia tidak membantu, lihat di dalam log PostgreSQL untuk mencari kesilapan. Sekiranya anda tidak menemui sesuatu mengenai kesilapan pakej, anda mungkin kehilangan salah satu modul SQL. Ini biasanya bukan penyebab masalah ini, tetapi pastinya tidak ada salahnya untuk melihatnya. Kemungkinan besar, anda sebenarnya akan menemui sesuatu yang memberi amaran kepada anda bahawa 'Kebenaran harus u = rwx (0700)' dan

bahawa 'direktori data' /var/lib/postgresql/9.6/main 'mempunyai akses kumpulan atau dunia', walaupun anda mungkin melihat nombor versi yang berbeza bergantung pada pelayan SQL mana yang anda jalankan.

Ini kerana Debian dan sebaran serupa mengharapkan pengguna dan kumpulan postgres mengendalikan direktori ini dengan izin 0700 dan semua fail melalui 0600 kebenaran untuk keselamatan. Yang harus anda lakukan hanyalah menjalankan perintah berikut di terminal untuk memperbaiki kebenaran:

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

Perlu diingat bahawa harus menjadi huruf besar X dan bukan huruf kecil yang lebih biasa yang mungkin anda biasa ketahui kerana cara khusus yang ingin anda tetapkan pilihan kebenaran fail ini. Walaupun anda memerlukan akses root untuk melakukan ini, penyertaan kedua tanda sudo tersebut harus lebih dari cukup untuk memberi kebenaran yang sewajarnya kepada diri anda ketika menjalankan sebagai pengguna biasa. Ini penting kerana Ubuntu dan pelbagai implementasi Linux terputus dari Ubuntu mencungkil akaun root utama sehingga anda perlu melakukan sesuatu dengan cara ini.

Setelah arahan ini selesai, anda boleh memulakan semula perkhidmatan dengan perkhidmatan sudo mulakan semula postgresql dari terminal dan anda semestinya tidak mempunyai kesilapan pada masa ini Sekiranya anda melihat log, maka peringatan berkenaan masalah kebenaran juga tidak perlu ada lagi.

Ini adalah ralat yang berlaku disebabkan oleh keadaan yang cukup spesifik, jadi anda tidak harus mengalaminya lagi setelah anda membetulkannya pada kali pertama dengan syarat anda tidak mencuba melakukan apa-apa secara manual yang melibatkan manipulasi kebenaran dari direktori PostgreSQL. Tidak ada keadaan di mana ini benar-benar diperlukan, selain daripada membetulkan masalah ini sejak awal.

3 minit membaca