Psql не вдалося підключитися до сервера: Немає такого файлу чи каталогу, помилка 5432?


114

Я намагаюся запустити 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, які я використовував для встановлення та запуску постгресів:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

1
Це була відповідь, яка працювала на мене: askubuntu.com/a/824325/733901
Бруно Лувем Азередо,

Відповіді:


156

У мене була ця сама проблема, пов’язана з конфігурацією мого файлу pg_hba.conf (розташованого в /etc/postgresql/9.6/main). Зверніть увагу, що 9.6 - це версія postgresql, яку я використовую.

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

Я б запропонував дотримуватися цих інструкцій:

  1. Підтвердьте, що служба postgresql працює, використовуючи sudo service postgresql start
  2. Запустити pg_lsclustersз терміналу
  3. Перевірте, що це кластер, на якому ви працюєте, вихід повинен бути чимось на зразок:

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

    9.6 ------- головна - 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] ЛОГ: недійсний метод аутентифікації "все"
    2017-07-13 16:53:04 BRT [32176-2] КОНТЕКСТ: рядок 90 файлу конфігурації "/ тощо /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

37

У мене було те саме питання, але не відповіді тут допомогли.

Як я це виправив (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
  • Зроблено ✨

13

Я просто публікую це для тих, хто відчуває себе втраченим і безнадійним, як я, коли знайшов це питання. Здається, що іноді, редагуючи деякі конфігураційні файли, пов'язані з psotgresql, можна випадково змінити дозволи файлу:

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

Зверніть увагу, як pg_hba.conf належить до root, і користувачі навіть не можуть його прочитати. Це призводить до того, що постгреси не зможуть відкрити цей файл і, отже, не зможуть запустити сервер, викинувши помилку, помічену в оригінальному питанні.

Забігаючи

sudo chmod +r pg_hba.conf

Мені вдалося зробити цей файл ще раз доступним для користувача postgres, а потім після запуску

sudo service postgresql start

Вдалося знову запустити сервер.


Так, це була моя проблема, і це не вказувалось у журналах (або якщо це я не розумів як).
EAmez

Не зовсім те, що трапилося зі мною, але чомусь мережеві послуги втратили привілеї для запису всієї структури каталогів. Ця відповідь спрямовувала мене в правильному напрямку, звідси і голосування.
Бред Метюз

5

Чи /etc/postgresql/9.6/main/postgresql.confпоказує, що призначений порт? У моєму встановленні Xubuntu Linux, моєму показано порт = 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.
Нійонгабо

4

Це працює для мене:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;

4

Ці два кроки вирішили це для мене на 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

не хвилюйтесь, насправді вийшло нормально. Я щойно побіг "варити postgresql-upgrade-database", і це зробило трюк, дякую
luckyguy73

1
Радий, що ви виправили це! Якщо ви не заперечуєте, я додам це і до відповіді, якщо хтось інший зіткнеться з тим же питанням. Спасибі
nicodp

3

В межах zsh:

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

Це єдине, що працювало для мене після незліченних годин зйомки неприємностей.


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 db у віртуальній машині. Я змінив значення за замовчуванням /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBна 75% моєї загальної оперативної пам’яті. Ну, я забув насправді виділити цю оперативну пам’ять у VM. Коли я дав команду зробити нову базу даних, я отримав ту саму помилку.

Вимкнув, дав дитині свою пляшку (оперативну пам’ять) і престо, вона спрацювала.


1

Я отримав цю помилку, коли відновив базу даних з останнього резервного файлу pg_basebackup. Після цього, коли я намагався підключити базу даних (psql), я отримував таку ж помилку. Помилка була усунена, коли я оновлював файл pg_hba.conf і де б там не було "peer" аутентифікації, я замінив його на "md5", а потім перезапустив послуги Postgres. Після цього проблема була вирішена.


1

У мене були подібні проблеми зовсім недавно. Спробувавши більше 5 пропозицій, я вирішив повернутися до основ і почати з початку. Що означало видалення моєї установки postgresql та дотримання цього керівництва після повторної установки postgresql. https://help.ubuntu.com/lts/serverguide/postgresql.html


1

Ця помилка трапилася зі мною після відключення мого mac mini (настільки вимушене вимкнення), і все, що мені потрібно було зробити, щоб виправити це, було перезапустити


1

Я рекомендую вам уточнити порт, який розміщує повідомлення. У моєму випадку я не знав, на якому постінгресі порту працює.

lsof -i | grep 'post'

тоді ви можете знати, який порт слухає.

psql -U postgres -p "port_in_use"

з варіантом порту, можливо, відповідь. ви можете використовувати psql.


1

У мене періодично виникає те саме питання, але в основному після оновлення macOS. Завершення роботи та перехід на нову версію зазвичай виправляють у мене (внесіть зміни відповідно до вашої версії). Тож спочатку оновіть ваш postgresql

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

Це здебільшого тимчасове виправлення, але оскільки я не міг знайти кращого рішення, це працює для мене.


варити postgresql-upgrade-database - це те, що нарешті спрацювало для мене після того, як я спробував все інше
luckyguy73

1

Якщо відповіді з вищезазначених питань не працюють для вас, спробуйте скористатися цією,

Багато людей згадували багато рішень цієї проблеми! Але всі вони забули, що така ж проблема виникне тоді, коли на вашому диску не вистачить місця або місця, яке вам призначено postgres, заповнене

Перевірте сховище вашої системи, якщо повне звільнення місця! потім перезавантажте свої поштові пошти до sudo service postgresql restartабо зупиніть і почніть sudo service posgresql stopпотімsudo service postgresql start

Це вирішить питання, воно вирішило для мене


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.