Popravek: psql: ni bilo mogoče vzpostaviti povezave s strežnikom: take datoteke ali imenika ni

PostgreSQL se promovira kot najnaprednejša odprtokodna aplikacijska platforma za baze podatkov, Debian Linux pa ima zagotovo veliko paketov, ki ga še bolj zapletajo. Naložene pakete za PostgreSQL lahko najdete tudi, če delate s strežnikom Ubuntu ali katerim koli različnim vrtljajem Ubuntu, saj temeljijo na jedru Debiana. Zaradi te stopnje zapletenosti in razvoja so opozorila "ni bilo mogoče vzpostaviti povezave s strežnikom" in "ni take datoteke ali imenika" še bolj nadležna.

Na srečo so to ponavadi preprosti primeri težav z dovoljenji, ki jih povzroča dejstvo, da PostgreSQL želi, da uporabnik z imenom postgres zadrži te imenike. Z uporabo preprostega trika ukazne vrstice lahko to popravite skoraj takoj. Pred tem pa boste želeli opraviti nekaj osnovnih diagnostičnih pregledov, da se prepričate, da je to dejansko težava, s katero se soočate.

Odprava napake PostgreSQL se ni mogla povezati z napakami strežnika

Najprej poskusite znova zagnati sistem PostgreSQL ročno. Včasih je to dovolj, da se stvari popravijo, in če ne, boste vsaj dobili sporočilo o napaki. Več kot verjetno sistem preprosto znova zaženete tako, da kot uporabnik postgres izdate ukaz psql.

Morda boste ugotovili, da je to vse razjasnilo. V nasprotnem primeru lahko dobite vrstico z napisom »psql: ni mogel vzpostaviti povezave s strežnikom: Ni take datoteke ali imenika«, kar pomeni, da imate težave z dovoljenjem. Če prejmete to sporočilo o napaki, boste dobili tudi nekaj drugega besedila.

Preverite stanje storitve, če ste prejeli to sporočilo, in se prepričajte, da so moduli naloženi. Morali bi biti, če pa ne, boste morda želeli znova zagnati. Če dobite sporočilo z naslovom »Loaded: loaded (/lib/systemd/system/postgresql.service; omogočeno)«, potem se tečejo. Poskusi sudo storitev postgresql vnovični zagon samo za kratek ponovni zagon in preverite, ali to kaj popravi. Običajno se ne, vendar je morda vredno poskusiti.

Če predpostavimo, da ni pomagalo, poglejte v dnevnik PostgreSQL in poiščite napake. V malo verjetnem primeru najdete kaj o napakah paketov, potem morda manjka kateri od modulov SQL. To običajno ni vzrok za te težave, vsekakor pa ne more škoditi, če si vsaj pogledamo. Več kot verjetno boste dejansko naleteli na nekaj, kar vas opozarja, da "Dovoljenja morajo biti u = rwx (0700)" in

da ima »podatkovni imenik« /var/lib/postgresql/9.6/main »skupinski ali svetovni dostop«, čeprav boste morda videli drugačno številko različice, odvisno od tega, kateri strežnik SQL uporabljate.

To je zato, ker Debian in podobne distribucije pričakujejo, da uporabnik in skupina postgres nadzira te imenike z dovoljenji 0700 in vse datoteke prek dovoljenj 0600 zaradi varnosti. Vse, kar morate storiti, je, da na terminalu za popravilo dovoljenj zaženete naslednji ukaz:

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

Upoštevajte, da bi moral biti velik X in ne pogostejši mali X, ki ga verjetno bolj poznate zaradi posebnega načina, kako boste želeli nastaviti te možnosti dovoljenja za datoteke. Čeprav za to potrebujete korenski dostop, mora biti vključitev teh dveh oznak sudo več kot dovolj, da si zagotovite ustrezna dovoljenja, ko delate kot običajni uporabnik. To je pomembno, saj so Ubuntu in različne implementacije Linuxa iz Ubuntuja razpršili glavni korenski račun, zato morate stvari narediti na ta način.

Ko se ta ukaz konča, lahko storitev znova zaženete do sudo storitev postgresql vnovični zagon od terminala in tokrat ne smete imeti napak. Če bi si želeli ogledati dnevnik, potem tudi teh opozoril glede težav z dovoljenji ne bi smelo biti več.

To je napaka, ki se zgodi kot posledica dokaj specifičnih pogojev, zato je ne smete več doživeti, potem ko ste jo prvič popravili, pod pogojem, da ne poskušate ročno narediti ničesar, kar bi vključevalo manipulacijo dovoljenj za imenike PostgreSQL. Ni situacije, ko bi to res moralo biti nujno, razen če bi to težavo sploh odpravili.


$config[zx-auto] not found$config[zx-overlay] not found