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

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


Да, это была моя проблема, и это не было указано в журналах (или, если это было так, я не понял как это).
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 = '*'. Так что, может быть, начнем и проверим там. Надеюсь, это поможет.



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


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 решили проблему.


1

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

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


1

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


1

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


1

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


1

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

lsof -i | grep 'post'

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

psql -U postgres -p "port_in_use"

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


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

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. И он работал нормально.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.