Коригиране: 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 service 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 service postgresql рестартиране от терминала и този път не трябва да имате грешки. Ако трябва да погледнете дневника, тогава тези предупреждения относно проблемите с разрешенията също не трябва да има повече.

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