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

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

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

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

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

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

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

Предполагая, что это не помогло, загляните в журнал 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 restart из терминала, и на этот раз у вас не должно быть никаких ошибок. Если бы вы заглянули в журнал, то этих предупреждений о проблемах с разрешениями там тоже не должно было быть.

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