Psql не может подключиться к серверу: нет такого файла или каталога, ошибка 5432?

119

Я пытаюсь запустить psqlсвою машину Vagrant, но получаю такую ​​ошибку:

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Примечание: Vagrant 1.9.2 Box: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

Команды EDIT, которые я использовал для установки и запуска postgres:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres
Саша Калаба
источник
2
Это был ответ, который сработал для меня: askubuntu.com/a/824325/733901
Бруно Лувем Азередо,

Ответы:

162

У меня была такая же проблема, связанная с конфигурацией моего файла pg_hba.conf (находится в /etc/postgresql/9.6/main). Обратите внимание, что 9.6 - это версия postgresql, которую я использую.

Сама ошибка связана с неправильной конфигурацией postgresql, что приводит к сбою сервера перед его запуском.

Я бы посоветовал следовать этим инструкциям:

  1. Подтвердите, что служба postgresql запущена, используя sudo service postgresql start
  2. Беги pg_lsclustersсо своего терминала
  3. Проверьте, какой кластер вы используете, результат должен быть примерно таким:

    Версия - Каталог данных владельца статуса порта кластера

    9.6 ------- main - 5432 онлайн postgres /var/lib/postgresql/9.6/main

    Не обращайте внимания на знаки "---", поскольку они используются там только для выравнивания. Важная информация - это версия и кластер. Вы также можете проверить, работает ли сервер или нет, в столбце статуса.

  4. Скопируйте информацию из версии и кластера и используйте так:, pg_ctlcluster <version> <cluster> startпоэтому в моем случае, используя версию 9.6 и кластер 'main', это будетpg_ctlcluster 9.6 main start
  5. Если что-то не так, postgresql сгенерирует журнал, к которому можно будет получить доступ /var/log/postgresql/postgresql-<version>-main.log, поэтому в моем случае полная команда будет sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. Вывод должен показать, в чем ошибка.

    2017-07-13 16:53:04 BRT [32176-1] LOG: недопустимый метод аутентификации "все"
    2017-07-13 16:53:04 BRT [32176-2] КОНТЕКСТ: строка 90 файла конфигурации "/ etc /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: не удалось загрузить pg_hba.conf

  7. Исправьте ошибки и перезапустите службу postgresql, sudo service postgresql restartи все будет в порядке.

Я много искал, чтобы найти это, спасибо этому сообщению .

Удачи!

Мальвадао
источник
1
Отличный гид. Полно исчерпывающих объяснений!
Salathiel Genèse
39

У меня была такая же проблема, но ни один из ответов здесь не помог.

Как я это исправил (mac)

  • Попробуйте запустить postgresql с pg_ctl -D /usr/local/var/postgres start
  • Найдите сообщение об ошибке, в котором написано что-то вроде FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Создайте этот отсутствующий каталог mkdir /usr/local/var/postgres/pg_tblspc
  • Повторяйте с первого шага, пока не создадите все отсутствующие каталоги.
  • Когда закончите, а затем попытайтесь снова запустить postgresql, он может сказатьFATAL: lock file "postmaster.pid" already exists
  • Удалите postmaster.pid :rm /usr/local/var/postgres/postmaster.pid
  • Запустите postgres с: pg_ctl -D /usr/local/var/postgres start
  • Готово ✨
Мартинласек
источник
15

Я просто отправляю это всем, кто чувствует себя потерянным и безнадежным, как и я, когда нашел этот вопрос. Кажется, что иногда, редактируя некоторые файлы конфигурации, связанные с psotgresql, можно случайно изменить права доступа к файлу:

введите описание изображения здесь

Обратите внимание, как pg_hba.conf принадлежит root, и пользователи не могут его даже прочитать. Это приводит к тому, что postgres не может открыть этот файл и, следовательно, не сможет запустить сервер, что приведет к ошибке, указанной в исходном вопросе.

Бегом

sudo chmod +r pg_hba.conf

Я смог снова сделать этот файл доступным для пользователя postgres, а затем после запуска

sudo service postgresql start

Удалось снова запустить сервер.

wfgeo
источник
Да, это была моя проблема, и это не было указано в журналах (или, если это было так, я не понял как это).
EAmez
Не совсем то, что случилось со мной, но по какой-то причине NETWORK SERVICE потерял права записи для всей структуры каталогов. Этот ответ указал мне в правильном направлении, отсюда и положительный отзыв.
Брэд Мэтьюз,
7

Эти два шага решили это для меня на Mac:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

РЕДАКТИРОВАТЬ:

Если вы столкнулись с этой проблемой (сообщил @ luckyguy73): psql: FATAL: database "postgresql" does not exist

Вы можете запустить

brew postgresql-upgrade-database

Исправить это.

никодп
источник
спасибо, чувак, я перешел от невозможности подключиться к фатальному, следуя вашим инструкциям: «psql: FATAL: база данных« postgresql »не существует»
luckyguy73
Как странно, у меня это всегда работает. Удалось ли это решить?
nicodp
не беспокойтесь, все оказалось нормально. я только что запустил brew postgresql-upgrade-database, и это
помогло
1
Рад, что ты это починил! Если вы не против, я тоже добавлю это к ответу, на случай, если кто-то еще столкнется с той же проблемой. Спасибо
nicodp
5

Имеет ли /etc/postgresql/9.6/main/postgresql.confпоказать , что порт быть назначен? При моей установке Xubuntu Linux по умолчанию мой показывал port = 5433 по какой-то причине, насколько я помню, но я закомментировал строку в том же файле, в которой говорилось listen_addresses = 'localhost'и раскомментировалось строку listen_addresses = '*'. Так что, может быть, начнем и проверим там. Надеюсь, это поможет.

J2112O
источник
5

Это работает для меня:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;
Мевлют-Оздемир
источник
4

Используйте команду:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
Гаурав Верма
источник
9
Разве это не удаляет всю базу данных? Думаю, уместно сделать одно предупреждение.
d33tah
1
Спасибо @Tucker Watts и @Gaurav Verma. Я решил свою проблему, попробовав оба решения, и добавил эту команду pg_ctl -D /usr/local/var/postgres -l logfile start.
Нийонгабо,
3

Внутри zsh:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Это единственное, что у меня сработало после бесчисленных часов устранения неполадок.

Такер Уоттс
источник
Я только что удалил все свои локальные базы данных ... спасибо
AlxVallejo
3

Мне удалось решить проблему, выполнив:

sudo systemctl start postgresql@9.5-main
Юджин Лем
источник
sudo systemctl start postgresql@12-mainу меня работал
парсер
2

Откройте менеджер базы данных и выполните этот скрипт

update pg_database set datallowconn = 'true' where datname = 'your_database_name';
Насер Абду
источник
2

То же самое произошло и со мной, я что-то изменил в /etc/hostsфайле. После того, как я вернул его обратно, 127.0.0.1 localhostон работал у меня.

кодрейджер
источник
2

просто переустановите pgsql с прямой версией sudo apt-get install postgresql-9.5 (вы должны удалить пакет перед установкой нового)

Виталий Холодов
источник
2

В моем случае postmaster.idпричиной проблемы был файл блокировки, который не был удален должным образом во время последнего сбоя системы. Удаление sudo rm /usr/local/var/postgres/postmaster.pidи перезапуск Postgres решили проблему.

xji
источник
1

У меня была такая же ошибка при создании базы данных SQL на виртуальной машине. Я изменил значение по умолчанию /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBна 75% от общего объема оперативной памяти. Ну, я забыл выделить эту оперативную память в виртуальной машине. Когда я дал команду создать новую базу данных, я получил ту же ошибку.

Выключил питание, дал ребенку его бутылочку (RAM) и готово, все заработало.

CENTURION
источник
1

Я получил эту ошибку, когда восстановил свою базу данных из последнего файла резервной копии pg_basebackup. После этого, когда я пытался подключить базу данных (psql), я получал ту же ошибку. Ошибка была устранена, когда я обновил файл pg_hba.conf и везде, где была аутентификация «однорангового узла», я заменил это на «md5», а затем перезапустил службы postgres. После этого проблема была решена.

Шивангини
источник
1

Недавно у меня были похожие проблемы. Попробовав более 5 предложений, я решил вернуться к основам и начать с самого начала. Это означало удаление моей установки postgresql и следование этому руководству при повторной установке postgresql. https://help.ubuntu.com/lts/serverguide/postgresql.html

милосердие
источник
1

Эта ошибка произошла со мной после того, как мой Mac mini отключился (поэтому принудительное выключение), и все, что мне нужно было сделать, чтобы исправить это, - это перезапустить

MuceyMuce
источник
1

Я рекомендую вам уточнить порт, который postgres. В моем случае я не знал, на каком порту работает postgres.

lsof -i | grep 'post'

тогда вы можете узнать, какой порт прослушивает.

psql -U postgres -p "port_in_use"

с опцией порта, может быть ответ. вы можете использовать psql.

Horoyoi O
источник
1

Если ни один из приведенных выше ответов не работает для вас, попробуйте этот,

Многие люди упомянули множество решений этой проблемы! Но все они забыли, что та же проблема возникнет, когда на вашем диске недостаточно места или пространство, для которого вы назначены, postgresзаполнено.

Проверьте системное хранилище, если оно полностью освободило место! затем перезапустите свой postgres sudo service postgresql restartили остановитесь, а sudo service posgresql stopзатем запуститеsudo service postgresql start

Это решит проблему, она решила за меня

Сушин Пв
источник
1

Иногда у меня возникает такая же проблема, но в основном после обновлений macOS. Выключение и переход на новую версию обычно исправляет это для меня (внесите изменения в соответствии с вашей версией). Итак, сначала обновите свой postgresql

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

В основном это временное исправление, но, поскольку я не мог найти лучшего решения, оно работает для меня.

Обновление: если проблема говорит о том, что работает другой постмастер, попробуйте удалить его из этого места (вам будет показано ваше местоположение postmaster.pid)

rm /usr/local/var/postgres/postmaster.pid

Нишит
источник
brew postgresql-upgrade-database - это то, что наконец сработало для меня после того, как я попробовал все остальное
luckyguy73
0

У меня такая же проблема с postgres 11 на моем Mac. Я получаю эту ошибку каждый раз после перезапуска

psql: could not connect to server: No such file or directory

Is the server running locally and accepting connections on 
Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Как временное исправление я делаю

brew services stop postgresql@11
brew services start postgresql@11
iAbhinav
источник
0
FATAL:  could not load server certificate file "/etc/ssl/certs/ssl-cert-snakeoil.pem": No such file or directory
LOG:  database system is shut down
pg_ctl: could not start server

У меня отсутствует файл ssl-cert-snakeoil.pem, поэтому я создал его с помощью make-ssl-cert generate-default-snakeoil --force-overwrite. И он работал нормально.

пользователь14222699
источник