Ayusin: psql: hindi makakonekta sa server: Walang tulad na file o direktoryo



Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema

Itinataguyod ng PostgreSQL ang sarili nito bilang pinaka-advanced na open-source platform ng application ng database, at tiyak na mayroong maraming mga package ang Debian Linux na ginagawang mas kumplikado. Maaari ka ring makahanap ng mga boatloads ng mga pakete para sa PostgreSQL kung nagtatrabaho ka sa Ubuntu Server o alinman sa iba't ibang mga pag-ikot ng Ubuntu, dahil nakabatay sa core ng Debian. Ang antas ng pagiging kumplikado at pag-unlad na ito ay gumagawa ng 'hindi makakonekta sa server' at 'walang ganoong file o direktoryo' na mga babala na higit na nakakainis.



Sa kasamaang palad, kadalasan ito ay simpleng mga kaso ng mga problema sa pahintulot na sanhi ng katotohanan na nais ng PostgreSQL ang isang gumagamit na nagngangalang postgres na hawakan ang mga direktoryo na ito. Sa pamamagitan ng paggamit ng isang simpleng trick sa linya ng utos, maaari mong ayusin ito nang halos agad-agad. Gusto mong dumaan muna sa ilang pangunahing mga pagsusuri sa diagnostic, gayunpaman, upang matiyak na ito talaga ang problema na kalaban mo.



Pag-aayos ng PostgreSQL Hindi Makakonekta sa Mga Error sa Server

Una, subukang manu-manong i-restart ang sistemang PostgreSQL. Minsan sapat na ito upang ayusin ang mga bagay, at kung hindi pagkatapos ay makakakuha ka ng kahit isang mensahe ng error upang magtrabaho. Higit sa malamang, i-restart mo lang ang system sa pamamagitan ng pag-isyu ng utos ng psql bilang gumagamit ng postgres.



Maaari mong malaman na ito ay tinanggal ang lahat up. Kung hindi man, maaari kang makakuha ng isang linya na mababasa ang 'psql: hindi makakonekta sa server: Walang ganoong file o direktoryo,' na nangangahulugang nagkakaroon ka ng mga problema sa pahintulot. Kung natanggap mo ang mensahe ng error na ito, makakakuha ka rin ng ibang spit na teksto.

Suriin ang katayuan sa serbisyo kung nakuha mo ang mensaheng ito upang matiyak na na-load ang mga module. Dapat sila ay, ngunit kung hindi sila maaaring gusto mong i-restart. Kung nakakuha ka ng isang mensahe na binabasa ang 'Loaded: load (/lib/systemd/system/postgresql.service; pinagana)', pagkatapos ay tumatakbo ang mga ito. Subukan mo sudo service postgresql restart gawin lamang ang isang maikling restart at makita kung naitama ang anumang. Karaniwan ay hindi, ngunit maaaring sulit subukang depende.




Ipagpalagay na hindi ito nakatulong, tumingin sa loob ng log ng PostgreSQL upang maghanap ng mga error. Sa malamang na hindi ka makahanap ng isang bagay tungkol sa mga error sa package, kung gayon maaaring nawawala sa iyo ang isa sa mga module ng SQL. Hindi ito karaniwang sanhi ng mga problemang ito, ngunit tiyak na hindi ito masasaktan kahit papaano magkaroon ng isang hitsura. Mas malaki kaysa sa malamang, makakakita ka talaga ng isang bagay na nagbababala sa iyo na 'Ang mga Pahintulot ay dapat na u = rwx (0700)' at

na ang 'direktoryo ng data na' /var/lib/postgresql/9.6/main 'ay may access sa pangkat o pandaigdigang', kahit na maaari kang makakita ng ibang numero ng bersyon depende sa kung aling SQL server ang iyong pinapatakbo.

Ito ay dahil inaasahan ni Debian at ng mga katulad na pamamahagi na kontrolin ng gumagamit at pangkat ng postgres ang mga direktoryo na ito na may 0700 na pahintulot at lahat ng mga file sa pamamagitan ng 0600 na mga pahintulot alang-alang sa seguridad. Ang kailangan mo lang gawin ay patakbuhin ang sumusunod na utos sa terminal upang ayusin ang mga pahintulot:

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

Tandaan na dapat ay isang pang-itaas na X at hindi ang mas karaniwang lower-case x marahil mas pamilyar ka dahil sa partikular na paraan na gugustuhin mong itakda ang mga pagpipiliang pahintulot sa file na ito. Habang kailangan mo ng root access upang magawa ito, ang pagsasama ng dalawang mga markang sudo ay dapat na higit pa sa sapat upang mabigyan ang iyong sarili ng mga tamang pahintulot kapag tumatakbo bilang isang regular na gumagamit. Ito ay mahalaga dahil ang Ubuntu at ang iba't ibang mga pagpapatupad ng Linux ay naikot mula sa Ubuntu hash out ang pangunahing root account kaya kailangan mong gawin ang mga bagay sa ganitong paraan.

Kapag natapos ang utos na ito, maaari mong muling simulang muli ang serbisyo sa pamamagitan ng sudo service postgresql restart mula sa terminal at hindi ka dapat magkaroon ng anumang mga error sa oras na ito. Kung titingnan mo ang log, kung gayon ang mga babalang iyon tungkol sa mga problema sa pahintulot ay hindi dapat naroroon din.

Ito ay isang error na nangyayari bilang resulta ng medyo tiyak na mga kundisyon, kaya hindi mo ito dapat maranasan muli pagkatapos mong naitama ito sa unang pagkakataon na ibinigay na hindi mo susubukan na manu-manong gumawa ng anumang kinasasangkutan ng pagmamanipula ng mga pahintulot sa mga direktoryo ng PostgreSQL Walang sitwasyon kung saan ito talaga dapat kinakailangan, sa labas ng pagwawasto ng problemang ito sa una.

Basahin ang 3 minuto