NUSTATYTI: psql: nepavyko prisijungti prie serverio: Nėra tokio failo ar katalogo
„PostgreSQL“ reklamuoja save kaip pažangiausią atvirojo kodo duomenų bazių programų platformą, o „Debian Linux“ tikrai turi daug paketų, kurie ją dar labiau apsunkina. Taip pat galite rasti „PostgreSQL“ paketų paketus, jei dirbate su „Ubuntu Server“ ar bet kuriuo iš įvairių „Ubuntu“ sukimų, nes jie yra pagrįsti „Debian“ branduoliu. Dėl tokio sudėtingumo ir išsivystymo lygio „nebeįmanoma prisijungti prie serverio“ ir „nėra tokio failo ar katalogo“ įspėjimai dar labiau erzina.
Laimei, tai dažniausiai paprasti leidimų problemų atvejai, kuriuos sukelia tai, kad „PostgreSQL“ nori, kad vartotojas, pavadintas „postgres“, laikytųsi šių katalogų. Naudodami paprastą komandinės eilutės triuką, galite tai išspręsti beveik akimirksniu. Vis dėlto norėsite iš anksto atlikti keletą pagrindinių diagnostinių patikrinimų, kad įsitikintumėte, jog būtent tai yra problema, su kuria susiduriate.
Pataisyti „PostgreSQL“ nepavyko prisijungti prie serverio klaidų
Pirmiausia pabandykite iš naujo paleisti „PostgreSQL“ sistemą rankiniu būdu. Kartais to pakanka pataisyti, o jei ne, gausite bent klaidos pranešimą. Labiau tikėtina, kad paprasčiausiai iš naujo paleidžiate sistemą, suteikdami komandą psql kaip „postgres“ vartotoją.
Galite pastebėti, kad tai viską išaiškino. Kitu atveju galite gauti eilutę su užrašu „psql: nepavyko prisijungti prie serverio: nėra tokio failo ar katalogo“, o tai reiškia, kad turite problemų dėl leidimo. Jei gausite šį klaidos pranešimą, gausite ir kitą tekstą.
Patikrinkite paslaugos būseną, jei gavote šį pranešimą, kad įsitikintumėte, jog moduliai yra įkelti. Jie turėtų būti, bet jei ne, galite paleisti iš naujo. Jei gaunate pranešimą su užrašu „Įkelta: pakrauta (/lib/systemd/system/postgresql.service; įgalinta)“, jie veikia. Bandyti sudo paslaugos postgresql paleiskite iš naujo kad galėčiau trumpai paleisti iš naujo ir sužinoti, ar tai ką nors ištaiso. Paprastai to nėra, bet galbūt verta išbandyti.
Darant prielaidą, kad tai nepadėjo, pažvelkite į „PostgreSQL“ žurnalo vidų ir ieškokite klaidų. Mažai tikėtina, kad rasite ką nors apie paketo klaidas, tada gali trūkti vieno iš SQL modulių. Paprastai tai nėra šių problemų priežastis, tačiau tikrai nepakenks bent jau pasižiūrėti. Labiau tikėtina, kad tikrai susidursite su tuo, kas jus įspėja, kad „Leidimai turėtų būti u = rwx (0700)“ ir
kad „duomenų katalogas„ /var/lib/postgresql/9.6/main “turi prieigą prie grupės ar pasaulio“, nors galite matyti kitą versijos numerį, priklausomai nuo to, kurį SQL serverį naudojate.
Taip yra todėl, kad „Debian“ ir panašūs paskirstymai tikisi, kad „postgres“ vartotojas ir grupė kontroliuoja šiuos katalogus su 0700 leidimais ir visus failus per 0600 leidimus saugumo sumetimais. Viskas, ką jums reikia padaryti, yra terminale paleisti šią komandą, kad nustatytumėte leidimus:
sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/
Turėkite omenyje, kad tai turėtų būti didžiosios raidės X, o ne labiau paplitusios mažosios raidės x, kurias tikriausiai labiau žinote dėl konkretaus būdo, kuriuo norėsite nustatyti šias failo leidimo parinktis. Nors jums reikia root prieigos, kad tai padarytumėte, šių dviejų sudo ženklų įtraukimo turėtų būti daugiau nei pakankamai, kad galėtumėte sau suteikti reikiamus leidimus, kai naudojatės kaip įprastas vartotojas. Tai svarbu, nes „Ubuntu“ ir įvairūs „Linux“ diegimai atsiskyrė nuo „Ubuntu“ maišos iš pagrindinės šaknies paskyros, todėl jums reikia tai padaryti taip.
Baigę šią komandą, galite iš naujo paleisti paslaugą sudo paslaugos postgresql paleiskite iš naujo iš terminalo ir šį kartą neturėtumėte turėti klaidų. Jei pažvelgtumėte į žurnalą, tų įspėjimų dėl leidimų problemų taip pat neturėtų būti.
Tai klaida, atsirandanti dėl gana specifinių sąlygų, todėl pirmą kartą ją ištaisę, neturėtumėte jos patirti iš naujo, jei nebandysite rankiniu būdu daryti nieko, susijusio su leidimų manipuliavimu „PostgreSQL“ katalogais. Nėra jokios situacijos, kai tai vis tiek turėtų būti reikalinga, išskyrus tai, kad pirmiausia reikia ištaisyti šią problemą.