Исправлено: psql: не удалось подключиться к серверу: нет такого файла или каталога



Попробуйте наш инструмент устранения неполадок

PostgreSQL позиционирует себя как наиболее продвинутая платформа приложений баз данных с открытым исходным кодом, а в Debian Linux, безусловно, есть множество пакетов, которые делают его еще более сложным. Вы также можете найти множество пакетов для PostgreSQL, если вы работаете с Ubuntu Server или с любым из различных вариантов Ubuntu, поскольку они основаны на ядре Debian. Такой уровень сложности и развития делает предупреждения «не удалось подключиться к серверу» и «нет такого файла или каталога» гораздо более раздражающими.



К счастью, это обычно простые случаи проблем с разрешениями, вызванных тем фактом, что PostgreSQL хочет, чтобы пользователь с именем postgres удерживал эти каталоги. Используя простой трюк с командной строкой, вы можете исправить это почти мгновенно. Однако вам следует заранее пройти несколько базовых диагностических проверок, чтобы убедиться, что это действительно проблема, с которой вы столкнулись.



Исправление ошибок PostgreSQL при подключении к серверу

Сначала попробуйте перезапустить систему PostgreSQL вручную. Иногда этого достаточно, чтобы что-то исправить, а если нет, то вы, по крайней мере, получите сообщение об ошибке, с которым можно работать. Скорее всего, вы просто перезапустите систему, введя команду psql от имени пользователя postgres.



Вы можете обнаружить, что это все прояснило. В противном случае вы можете получить строку с надписью «psql: не удалось подключиться к серверу: нет такого файла или каталога», что означает, что у вас проблемы с разрешениями. Если вы получите это сообщение об ошибке, то получите и другой текст.

Если вы получили это сообщение, проверьте статус службы, чтобы убедиться, что модули загружены. Они должны быть такими, но если их нет, возможно, вы захотите перезапустить. Если вы получили сообщение «Загружено: загружено (/lib/systemd/system/postgresql.service; enabled)», значит, они запущены. Пытаться перезапуск службы sudo postgresql просто сделать краткий перезапуск и посмотреть, исправит ли это что-нибудь. Обычно это не так, но, возможно, стоит попробовать.




Предполагая, что это не помогло, загляните в журнал PostgreSQL на предмет ошибок. В том маловероятном случае, если вы обнаружите что-то об ошибках пакетов, возможно, вам не хватает одного из модулей SQL. Обычно это не причина этих проблем, но, конечно, не помешает хотя бы взглянуть. Скорее всего, вы действительно столкнетесь с чем-то, что предупреждает вас, что «Permissions should be 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 минуты на чтение