Коригиране: psql: не можа да се свърже със сървър: Няма такъв файл или директория



Опитайте Нашия Инструмент За Премахване На Проблемите

PostgreSQL се рекламира като най-модерната платформа за приложения с бази данни с отворен код, а Debian Linux със сигурност има много пакети, които я правят още по-сложна. Можете също така да намерите заредени пакети за PostgreSQL, ако работите с Ubuntu Server или някое от различните завъртания на Ubuntu, тъй като те се основават на ядрото на Debian. Това ниво на сложност и развитие прави предупрежденията „не може да се свърже със сървър“ и „няма такъв файл или директория“ още по-досадни.



За щастие това обикновено са прости случаи на проблеми с разрешенията, причинени от факта, че PostgreSQL иска потребител на име postgres да държи тези директории. Използвайки прост трик от командния ред, можете да го коригирате почти моментално. Все пак ще искате да преминете през няколко основни диагностични проверки, само за да се уверите, че това всъщност е проблемът, срещу който се изправяте.



Коригиране на PostgreSQL не можа да се свърже със сървърни грешки

Първо, опитайте да рестартирате системата PostgreSQL ръчно. Понякога това е достатъчно, за да поправите нещата и ако не, тогава ще получите поне съобщение за грешка, от което да работите. Повече от вероятно просто рестартирате системата, като издадете командата psql като потребител на postgres.



Може да откриете, че това изчисти всичко. В противен случай може да получите ред, който гласи „psql: не може да се свърже със сървър: Няма такъв файл или директория“, което означава, че имате проблеми с разрешението. Ако получите това съобщение за грешка, ще получите и друг текстов текст.

Проверете състоянието на услугата, ако сте получили това съобщение, за да сте сигурни, че модулите са заредени. Те би трябвало да бъдат, но ако не са, може да искате да рестартирате. Ако получите съобщение, което гласи „Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)“, те се изпълняват. Опитвам sudo услуга postgresql рестартиране просто да направя кратко рестартиране и да видя дали това коригира нещо. Обикновено не го прави, но може да си струва да опитате в зависимост.




Ако приемем, че не е помогнало, погледнете вътре в дневника на PostgreSQL, за да потърсите грешки. В малко вероятния случай ще откриете нещо за грешки в пакета, тогава може да липсва някой от SQL модулите. Това обикновено не е причината за тези проблеми, но със сигурност не може да навреди поне да погледнете. Повече от вероятно наистина ще срещнете нещо, което да ви предупреждава, че „Разрешенията трябва да бъдат u = rwx (0700)“ и

че „директорията с данни„ /var/lib/postgresql/9.6/main “има групов или световен достъп“, въпреки че може да видите различен номер на версия в зависимост от това кой SQL сървър използвате.

Това е така, защото Debian и подобни дистрибуции очакват потребителят и групата 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, а не по-често срещаните малки букви x, с които вероятно сте по-запознати поради специфичния начин, по който ще искате да зададете тези опции за разрешаване на файлове. Въпреки че се нуждаете от root достъп, за да направите това, включването на тези две sudo марки трябва да бъде повече от достатъчно, за да си осигурите правилните разрешения, когато работите като обикновен потребител. Това е важно, тъй като Ubuntu и различните внедрения на Linux се отделиха от Ubuntu, хеширайки основния акаунт на root, така че трябва да правите нещата по този начин.

След като тази команда приключи, можете да рестартирате услугата отново до sudo услуга postgresql рестартиране от терминала и този път не трябва да имате грешки. Ако трябва да погледнете дневника, тези предупреждения относно проблемите с разрешенията също не трябва да съществуват повече.

Това е грешка, която се случва в резултат на доста специфични условия, така че не трябва да я изпитвате отново, след като сте я коригирали за първи път, при условие че не се опитвате ръчно да правите нищо, включващо манипулиране на разрешенията на директориите PostgreSQL. Няма ситуация, при която така или иначе наистина да е необходимо, извън първоначалното коригиране на този проблем.

3 минути четене