Не удается подключиться к postgresql на порту 5432

Я установил стек Bitnami Django, который включал PostgreSQL 8.4.

Когда я запускаю psql -U postgres, я получаю следующую ошибку:

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"?

PG определенно работает, а кнопка pg_hba.conf выглядит следующим образом:

# TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5

Что дает?

«Доказательство», что pg запущено:

root@assaf-desktop:/home/assaf# ps axf | grep postgres 14338 ? S 0:00 /opt/djangostack-1.3-0/postgresql/bin/postgres -D /opt/djangostack-1.3-0/postgresql/data -p 5432 14347 ? Ss 0:00 \_ postgres: writer process 14348 ? Ss 0:00 \_ postgres: wal writer process 14349 ? Ss 0:00 \_ postgres: autovacuum launcher process 14350 ? Ss 0:00 \_ postgres: stats collector process 15139 pts/1 S+ 0:00 \_ grep --color=auto postgres root@assaf-desktop:/home/assaf# netstat -nltp | grep 5432 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 14338/postgres tcp6 0 0 ::1:5432 :::* LISTEN 14338/postgres root@assaf-desktop:/home/assaf#
63
задан 26 June 2011 в 17:26

87 ответов

Решение:

Сделайте это

  export LC_ALL = "en_US.UTF-8"  

и это. (9.3 - моя текущая версия PostgreSQL. Напишите свою версию!)

  sudo pg_createcluster 9.3 main --start  
3
ответ дан 10 August 2018 в 09:33

Я обнаружил, что удаление звуков Postgres неубедительно. Это помогает решить мою проблему:

  1. Запустить сервер postgres: sudo systemctl start postgresql
  2. Убедитесь, что сервер запускается при загрузке: sudo systemctl enable postgresql

Подробную информацию можно найти на сайте DigitalOcean Здесь.

0
ответ дан 10 August 2018 в 09:33

У меня была такая же проблема, о которой описал Питер Айзентраут. Используя netstat -nlp | grep 5432 , я мог видеть, что сервер прослушивал сокет /tmp/.s.PGSQL.5432 .

Чтобы исправить это, просто отредактируйте свой postgresql.conf и измените следующие строки:

  listen_addresses = '*' unix_socket_directories = '/ var / run / postgresql'  

] Теперь запустите service postgresql-9.4 restart (замените 9-4 вашей версией), и теперь должны работать удаленные подключения.

Теперь, чтобы разрешить локальные подключения, просто создайте символическую ссылку на каталог / var / run / postgresql .

  ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.  PGSQL.5432  

Не забудьте убедиться, что ваш pg_hba.conf настроен правильно.

0
ответ дан 10 August 2018 в 09:33

В моем случае это было вызвано опечаткой, которое я сделал при редактировании /etc/postgresql/9.5/main/pg_hba.conf

Я изменил:

  # Административный вход в базу данных по Unix-домену сокет local all postgres peer  

to:

  # Административный вход в базу данных по домену Unix local all  postgres MD5  

Но MD5 должен был иметь нижний регистр md5 :

  # Административный вход в базу данных по  Unix доменное локальное все postgres md5  
2
ответ дан 10 August 2018 в 09:33

Сообщение об ошибке относится к сокету Unix-домена, поэтому вам нужно настроить ваш вызов netstat , чтобы не исключать их. Поэтому попробуйте без опции -t :

  netstat -nlp |  grep 5432  

Я бы предположил, что сервер действительно прослушивает сокет /tmp/.s.PGSQL.5432 , а не файл / var / run / postgresql / .s.PGSQL.5432 , к которому пытается подключиться ваш клиент. Это типичная проблема при использовании компилированных или сторонних пакетов PostgreSQL на Debian или Ubuntu, потому что исходный по умолчанию для каталога сокетов в Unix-домене является / tmp , но упаковка Debian меняет его на / var / run / postgresql .

Возможные обходные пути:

  • Используйте клиентов, предоставленных вашим сторонним пакетом (вызов / opt /djangostack-1.3-0/postgresql/bin/psql).
  • Исправить каталог сокетов стороннего пакета, который будет совместим с Debian / Ubuntu.
  • Исключить все пакеты, поставляемые Ubuntu, ] Используйте -H localhost для подключения через TCP / IP.
  • Используйте -h / tmp или эквивалентную настройку PGHOST чтобы указать на правый каталог.
  • Не используйте сторонние пакеты.
19
ответ дан 10 August 2018 в 09:33

Мне пришлось скомпилировать PostgreSQL 8.1 на Debian Squeeze, потому что я использую Project Open, основанный на OpenACS и не запускающийся в более поздних версиях PostgreSQL.

Конфигурация компиляции по умолчанию ставит unix_socket в / tmp , но Project Open, который полагается на PostgreSQL, не будет работать, потому что он ищет unix_socket в / var / run / PostgreSQL .

В настройке postgresql.conf есть настройка для установки местоположения сокета. Моя проблема заключалась в том, что либо я мог установить для / tmp и psql , но не проект открытым, или я мог бы установить его для / var / run / postgresql [ ! d7] и psql не будут работать, но проект открыт.

Одно из решений этой проблемы - установить сокет для / var / run / postgresql , а затем запустите psql , исходя из предложения Питера, как:

  psql -h / var / run / postgresql  

Это выполняется локально с использованием локальных разрешений. Единственным недостатком является то, что это больше набирает, чем просто «psql».

Другое предложение, которое кто-то сделал, заключалось в создании символической связи между двумя местоположениями. Это также сработало, но ссылка исчезла при перезагрузке. Возможно, проще просто использовать аргумент -h, однако я создал символическую ссылку из сценария PostgreSQL в /etc/init.d . Я поместил символическую ссылку создать команду в разделе «Начало». Конечно, когда я выдаю команду «Стоп» и «Запустить или перезапустить», она попытается воссоздать существующую символическую ссылку, но, помимо предупреждения, в этом нет вреда.

В моем случае вместо этого of:

  ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432  

У меня есть

  ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.PGSQL.5432  

и явно заданы unix_socket в /var/run/postgresql/.s.PGSQL.5432 в postgresql.conf .

5
ответ дан 10 August 2018 в 09:33

В моем случае все, что я должен был сделать, это следующее:

  sudo service postgresql restart  

, а затем

  sudo -u postgres psql  

Это сработало отлично. Надеюсь, поможет. Приветствия :).

0
ответ дан 10 August 2018 в 09:33

Вы можете использовать psql -U postgres -h localhost , чтобы заставить соединение происходить через TCP вместо сокетов домена UNIX; ваш вывод netstat показывает, что сервер PostgreSQL прослушивает порт 5432 локального хоста.

Вы можете узнать, какой локальный UNIX-сокет используется сервером PostgrSQL, используя другую функцию invocavtion netstat :

  netstat -lp --protocol = unix |  grep postgres  

Во всяком случае интерфейсы, на которых прослушивается сервер PostgreSQL, настроены в postgresql.conf .

16
ответ дан 10 August 2018 в 09:33

Просто создайте такую ​​программную ссылку:

  ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432  [  ! d2]                   
15
ответ дан 10 August 2018 в 09:33

В то же время я попытался что-то другое:

Запуск дескриптора postgresql вручную я получил:

  FATAL: не удалось создать сегмент разделяемой памяти ...  уменьшите размер запроса (в настоящее время 57237504 байта), уменьшите использование общей памяти PostgreSQL, возможно, за счет сокращения shared_buffers или max_connections.   

Итак, я сделал, чтобы установить нижний предел для shared_buffers и max_connections в postgresql.conf и перезапустите службу .

Это исправило проблему!

Вот полный журнал ошибок:

  $ sudo service postgresql start * Запуск сервера баз данных PostgreSQL 9.1 * Сервер PostgreSQL  не смог начать.  Пожалуйста, проверьте выход журнала: 2013-06-26 15:05:11 CEST FATAL: не удалось создать сегмент разделяемой памяти: недопустимый аргумент 2013-06-26 15:05:11 CEST DETAIL: Неудачный системный вызов был shmget (key = 5432001  , размер = 57237504, 03600).  2013-06-26 15:05:11 CEST HINT: эта ошибка обычно означает, что запрос PostgreSQL для сегмента разделяемой памяти превысил параметр SHMMAX вашего ядра.  Вы можете уменьшить размер запроса или перенастроить ядро ​​с большим SHMMAX.  Чтобы уменьшить размер запроса (в настоящее время 57237504 байта), уменьшите использование общей памяти PostgreSQL, возможно, путем сокращения shared_buffers или max_connections.  Если размер запроса уже невелик, возможно, что он меньше, чем параметр SHMMIN вашего ядра, и в этом случае требуется увеличить размер запроса или перенастроить SHMMIN.  В документации PostgreSQL содержится дополнительная информация о конфигурации разделяемой памяти.   
69
ответ дан 10 August 2018 в 09:33

Решение:

Сделайте это

  export LC_ALL = "en_US.UTF-8"  

и это. (9.3 - моя текущая версия PostgreSQL. Напишите свою версию!)

  sudo pg_createcluster 9.3 main --start  
3
ответ дан 13 August 2018 в 15:42
  • 1
    woooow, это было единственное решение моей проблемы, спасибо. – user3687723 18 July 2016 в 01:25

Я обнаружил, что удаление звуков Postgres неубедительно. Это помогает решить мою проблему:

  1. Запустить сервер postgres: sudo systemctl start postgresql
  2. Убедитесь, что сервер запускается при загрузке: sudo systemctl enable postgresql

Подробную информацию можно найти на сайте DigitalOcean Здесь.

0
ответ дан 13 August 2018 в 15:42

У меня была такая же проблема, о которой описал Питер Айзентраут. Используя netstat -nlp | grep 5432 , я мог видеть, что сервер прослушивал сокет /tmp/.s.PGSQL.5432 .

Чтобы исправить это, просто отредактируйте свой postgresql.conf и измените следующие строки:

  listen_addresses = '*' unix_socket_directories = '/ var / run / postgresql'  

] Теперь запустите service postgresql-9.4 restart (замените 9-4 вашей версией), и теперь должны работать удаленные подключения.

Теперь, чтобы разрешить локальные подключения, просто создайте символическую ссылку на каталог / var / run / postgresql .

  ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.  PGSQL.5432  

Не забудьте убедиться, что ваш pg_hba.conf настроен правильно.

0
ответ дан 13 August 2018 в 15:42

В моем случае это было вызвано опечаткой, которое я сделал при редактировании /etc/postgresql/9.5/main/pg_hba.conf

Я изменил:

  # Административный вход в базу данных по Unix-домену сокет local all postgres peer  

to:

  # Административный вход в базу данных по домену Unix local all  postgres MD5  

Но MD5 должен был иметь нижний регистр md5 :

  # Административный вход в базу данных по  Unix доменное локальное все postgres md5  
2
ответ дан 13 August 2018 в 15:42
  • 1
    Это ответ, который исправил это для меня :) Я ранее поменял мой на trusted вместо trust и не перезапустил службу, и это только сломало следующий день, когда я уже забыл, что я изменил – Phlippie Bosman 31 March 2018 в 10:25

Сообщение об ошибке относится к сокету Unix-домена, поэтому вам нужно настроить ваш вызов netstat , чтобы не исключать их. Поэтому попробуйте без опции -t :

  netstat -nlp |  grep 5432  

Я бы предположил, что сервер действительно прослушивает сокет /tmp/.s.PGSQL.5432 , а не файл / var / run / postgresql / .s.PGSQL.5432 , к которому пытается подключиться ваш клиент. Это типичная проблема при использовании компилированных или сторонних пакетов PostgreSQL на Debian или Ubuntu, потому что исходный по умолчанию для каталога сокетов в Unix-домене является / tmp , но упаковка Debian меняет его на / var / run / postgresql .

Возможные обходные пути:

  • Используйте клиентов, предоставленных вашим сторонним пакетом (вызов / opt /djangostack-1.3-0/postgresql/bin/psql).
  • Исправить каталог сокетов стороннего пакета, который будет совместим с Debian / Ubuntu.
  • Исключить все пакеты, поставляемые Ubuntu, ] Используйте -H localhost для подключения через TCP / IP.
  • Используйте -h / tmp или эквивалентную настройку PGHOST чтобы указать на правый каталог.
  • Не используйте сторонние пакеты.
19
ответ дан 13 August 2018 в 15:42

Мне пришлось скомпилировать PostgreSQL 8.1 на Debian Squeeze, потому что я использую Project Open, основанный на OpenACS и не запускающийся в более поздних версиях PostgreSQL.

Конфигурация компиляции по умолчанию ставит unix_socket в / tmp , но Project Open, который полагается на PostgreSQL, не будет работать, потому что он ищет unix_socket в / var / run / PostgreSQL .

В настройке postgresql.conf есть настройка для установки местоположения сокета. Моя проблема заключалась в том, что либо я мог установить для / tmp и psql , но не проект открытым, или я мог бы установить его для / var / run / postgresql [ ! d7] и psql не будут работать, но проект открыт.

Одно из решений этой проблемы - установить сокет для / var / run / postgresql , а затем запустите psql , исходя из предложения Питера, как:

  psql -h / var / run / postgresql  

Это выполняется локально с использованием локальных разрешений. Единственным недостатком является то, что это больше набирает, чем просто «psql».

Другое предложение, которое кто-то сделал, заключалось в создании символической связи между двумя местоположениями. Это также сработало, но ссылка исчезла при перезагрузке. Возможно, проще просто использовать аргумент -h, однако я создал символическую ссылку из сценария PostgreSQL в /etc/init.d . Я поместил символическую ссылку создать команду в разделе «Начало». Конечно, когда я выдаю команду «Стоп» и «Запустить или перезапустить», она попытается воссоздать существующую символическую ссылку, но, помимо предупреждения, в этом нет вреда.

В моем случае вместо этого of:

  ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432  

У меня есть

  ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.PGSQL.5432  

и явно заданы unix_socket в /var/run/postgresql/.s.PGSQL.5432 в postgresql.conf .

5
ответ дан 13 August 2018 в 15:42

В моем случае все, что я должен был сделать, это следующее:

  sudo service postgresql restart  

, а затем

  sudo -u postgres psql  

Это сработало отлично. Надеюсь, поможет. Приветствия :).

0
ответ дан 13 August 2018 в 15:42

Вы можете использовать psql -U postgres -h localhost , чтобы заставить соединение происходить через TCP вместо сокетов домена UNIX; ваш вывод netstat показывает, что сервер PostgreSQL прослушивает порт 5432 локального хоста.

Вы можете узнать, какой локальный UNIX-сокет используется сервером PostgrSQL, используя другую функцию invocavtion netstat :

  netstat -lp --protocol = unix |  grep postgres  

Во всяком случае интерфейсы, на которых прослушивается сервер PostgreSQL, настроены в postgresql.conf .

16
ответ дан 13 August 2018 в 15:42

Просто создайте такую ​​программную ссылку:

  ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432  [  ! d2]                   
15
ответ дан 13 August 2018 в 15:42
  • 1
    Это сработало для меня и показалось, что это самое простое решение без необходимости изменять конфигурацию postgresql. Убедитесь, что вы являетесь суперпользователем при попытке сделать ссылку. – brendan 8 March 2013 в 02:11
  • 2
    ln: не удалось создать символическую ссылку '/var/run/postgresql/.s.PGSQL.5432': файл существует – P_M 27 October 2017 в 09:50
  • 3
    Я создал & quot; postgresql & quot; папку в каталоге / var / run /. Этого не было. – Ikrom 10 June 2018 в 09:51

В то же время я попытался что-то другое:

Запуск дескриптора postgresql вручную я получил:

  FATAL: не удалось создать сегмент разделяемой памяти ...  уменьшите размер запроса (в настоящее время 57237504 байта), уменьшите использование общей памяти PostgreSQL, возможно, за счет сокращения shared_buffers или max_connections.   

Итак, я сделал, чтобы установить нижний предел для shared_buffers и max_connections в postgresql.conf и перезапустите службу .

Это исправило проблему!

Вот полный журнал ошибок:

  $ sudo service postgresql start * Запуск сервера баз данных PostgreSQL 9.1 * Сервер PostgreSQL  не смог начать.  Пожалуйста, проверьте выход журнала: 2013-06-26 15:05:11 CEST FATAL: не удалось создать сегмент разделяемой памяти: недопустимый аргумент 2013-06-26 15:05:11 CEST DETAIL: Неудачный системный вызов был shmget (key = 5432001  , размер = 57237504, 03600).  2013-06-26 15:05:11 CEST HINT: эта ошибка обычно означает, что запрос PostgreSQL для сегмента разделяемой памяти превысил параметр SHMMAX вашего ядра.  Вы можете уменьшить размер запроса или перенастроить ядро ​​с большим SHMMAX.  Чтобы уменьшить размер запроса (в настоящее время 57237504 байта), уменьшите использование общей памяти PostgreSQL, возможно, путем сокращения shared_buffers или max_connections.  Если размер запроса уже невелик, возможно, что он меньше, чем параметр SHMMIN вашего ядра, и в этом случае требуется увеличить размер запроса или перенастроить SHMMIN.  В документации PostgreSQL содержится дополнительная информация о конфигурации разделяемой памяти.   
69
ответ дан 13 August 2018 в 15:42
  • 1
    это помогло мне с postgres 9.3. – sevenseacat 30 July 2014 в 06:49
  • 2
    Это должен быть принятый ответ, работает с postgres 9.4 / ubuntu 14.10, тоже – Malte 8 April 2015 в 13:09
  • 3
    listen_address = '*' сделал трюк. он слушал только «localhost», а не на 127.0.0.1. Спасибо! – mwm 26 June 2015 в 02:06
  • 4
    этот ответ помог мне с перемешиванием postgres 9.4 и 9.3. Круто. – ingo 6 December 2015 в 16:20
  • 5
    Работал для ubuntu 16.04 и postgres 9.5, но сначала должен был очистить каждый пакет postgres. – Evert 27 April 2016 в 15:38
  • 6
    Это действительно потрясающий ответ! А также ужасный пользовательский интерфейс на стороне postgres – user1952500 23 July 2016 в 09:04
  • 7
    мой бог ... наконец-то что-то сработало - ничего больше не работало, пока я не добавил адрес и без комментариев в listen_address. – AntonB 9 August 2016 в 21:09
  • 8
    Ха, прости, я думаю, что команды ясно дали понять. для меня, я встречаю эту проблему, когда я переустанавливаю postgresql, я пытаюсь перезапустить его по типу service postgresql restart , но он сказал, что у меня не было кластера postgresql. Тогда я нахожу этот способ помочь мне :) – mymusise 13 September 2016 в 16:45
  • 9
    Плюс один! Это сработало для меня. – Atul Makwana 6 October 2016 в 23:18
  • 10
    Ну, после трех часов работы в Google, вы, наконец, исправили мою проблему. dpkg-reconfigure locales очень важен. – Don Mums 21 February 2017 в 02:35
  • 11
    это работает на ubuntu windows bash. – ahmadalibaloch 18 April 2018 в 11:21

У меня была та же проблема (на Ubuntu 15.10 (хитрый)). sudo find / -name 'pg_hba.conf' -print или sudo find / -name 'postgresql.conf' -print оказалось пустым. До этого казалось, что были установлены несколько экземпляров postgresql.

Возможно, вы столкнулись с подобными ситуациями, когда вы видите как установленные, или проблемы с ошибками в списке

  ... / postgresql ... / postgresql-9.x  [  ! d19] 

и т. д.

В этом случае вы должны sudo apt-get autoremove каждый пакет 1 на 1.

Затем следуя этому к письму, и все будет хорошо. Особенно, когда речь идет о ключевом импорте и добавлении в исходный список FIRST

  sudo apt-get update & amp; & amp; & amp; & amp; & amp; & amp;  sudo apt-get -y install python-software-properties & amp; & amp; & amp; & amp;  wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc |  sudo apt-key add -  

Если вы не используете wily, замените wily на ваш выпуск, то есть с выходом lsb_release -cs

  sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ wily-pgdg main" & gt; & gt; & gt; & gt; & gt;  /etc/apt/sources.list.d/postgresql.list 'sudo apt-get update & amp; & amp; & amp; & amp; & amp; & amp;  sudo apt-get install postgresql-9.3 pgadmin3  

И тогда вы должны быть в порядке и иметь возможность подключаться и создавать пользователей.

Ожидаемый результат:

  Создание нового кластера 9.3 / main ... config /etc/postgresql/9.3/main data /var/lib/postgresql/9.3/main locale ru_US.UTF-8 socket / var / run / postgresql порт 5432 [  ! d9] 

Источник моих решений (кредиты)

69
ответ дан 15 August 2018 в 22:32
  • 1
    это помогло мне с postgres 9.3. – sevenseacat 30 July 2014 в 06:49
  • 2
    Это должен быть принятый ответ, работает с postgres 9.4 / ubuntu 14.10, тоже – Malte 8 April 2015 в 13:09
  • 3
    listen_address = '*' сделал трюк. он слушал только «localhost», а не на 127.0.0.1. Спасибо! – mwm 26 June 2015 в 02:06
  • 4
    этот ответ помог мне с перемешиванием postgres 9.4 и 9.3. Круто. – ingo 6 December 2015 в 16:20
  • 5
    Работал для ubuntu 16.04 и postgres 9.5, но сначала должен был очистить каждый пакет postgres. – Evert 27 April 2016 в 15:38
  • 6
    Это действительно потрясающий ответ! А также ужасный пользовательский интерфейс на стороне postgres – user1952500 23 July 2016 в 09:04
  • 7
    мой бог ... наконец-то что-то сработало - ничего больше не работало, пока я не добавил адрес и без комментариев в listen_address. – AntonB 9 August 2016 в 21:09
  • 8
    Ха, прости, я думаю, что команды ясно дали понять. для меня, я встречаю эту проблему, когда я переустанавливаю postgresql, я пытаюсь перезапустить его по типу service postgresql restart , но он сказал, что у меня не было кластера postgresql. Тогда я нахожу этот способ помочь мне :) – mymusise 13 September 2016 в 16:45
  • 9
    Плюс один! Это сработало для меня. – Atul Makwana 6 October 2016 в 23:18
  • 10
    Ну, после трех часов работы в Google, вы, наконец, исправили мою проблему. dpkg-reconfigure locales очень важен. – Don Mums 21 February 2017 в 02:35
  • 11
    это работает на ubuntu windows bash. – ahmadalibaloch 18 April 2018 в 11:21

Найдите файл:

  sudo find / tmp / -name .s.PGSQL.5432  

Результат:

   /tmp/.s.PGSQL.5432  

Вход как пользователь postgres:

  su postgres psql -h / tmp / yourdatabase  
69
ответ дан 19 August 2018 в 00:54
  • 1
    это помогло мне с postgres 9.3. – sevenseacat 30 July 2014 в 06:49
  • 2
    Это должен быть принятый ответ, работает с postgres 9.4 / ubuntu 14.10, тоже – Malte 8 April 2015 в 13:09
  • 3
    listen_address = '*' сделал трюк. он слушал только «localhost», а не на 127.0.0.1. Спасибо! – mwm 26 June 2015 в 02:06
  • 4
    этот ответ помог мне с перемешиванием postgres 9.4 и 9.3. Круто. – ingo 6 December 2015 в 16:20
  • 5
    Работал для ubuntu 16.04 и postgres 9.5, но сначала должен был очистить каждый пакет postgres. – Evert 27 April 2016 в 15:38
  • 6
    Это действительно потрясающий ответ! А также ужасный пользовательский интерфейс на стороне postgres – user1952500 23 July 2016 в 09:04
  • 7
    мой бог ... наконец-то что-то сработало - ничего больше не работало, пока я не добавил адрес и без комментариев в listen_address. – AntonB 9 August 2016 в 21:09
  • 8
    Ха, прости, я думаю, что команды ясно дали понять. для меня, я встречаю эту проблему, когда я переустанавливаю postgresql, я пытаюсь перезапустить его по типу service postgresql restart , но он сказал, что у меня не было кластера postgresql. Тогда я нахожу этот способ помочь мне :) – mymusise 13 September 2016 в 16:45
  • 9
    Плюс один! Это сработало для меня. – Atul Makwana 6 October 2016 в 23:18
  • 10
    Ну, после трех часов работы в Google, вы, наконец, исправили мою проблему. dpkg-reconfigure locales очень важен. – Don Mums 21 February 2017 в 02:35
  • 11
    это работает на ubuntu windows bash. – ahmadalibaloch 18 April 2018 в 11:21

Возможно, это могло произойти, потому что вы изменили права доступа к папке /var/lib/postgresql/9.3/main .

Попробуйте изменить его на 700, используя команду ниже :

  sudo chmod 700 main  
69
ответ дан 22 August 2018 в 10:49
  • 1
    это помогло мне с postgres 9.3. – sevenseacat 30 July 2014 в 06:49
  • 2
    Это должен быть принятый ответ, работает с postgres 9.4 / ubuntu 14.10, тоже – Malte 8 April 2015 в 13:09
  • 3
    listen_address = '*' сделал трюк. он слушал только «localhost», а не на 127.0.0.1. Спасибо! – mwm 26 June 2015 в 02:06
  • 4
    этот ответ помог мне с перемешиванием postgres 9.4 и 9.3. Круто. – ingo 6 December 2015 в 16:20
  • 5
    Работал для ubuntu 16.04 и postgres 9.5, но сначала должен был очистить каждый пакет postgres. – Evert 27 April 2016 в 15:38
  • 6
    Это действительно потрясающий ответ! А также ужасный пользовательский интерфейс на стороне postgres – user1952500 23 July 2016 в 09:04
  • 7
    мой бог ... наконец-то что-то сработало - ничего больше не работало, пока я не добавил адрес и без комментариев в listen_address. – AntonB 9 August 2016 в 21:09
  • 8
    Ха, прости, я думаю, что команды ясно дали понять. для меня, я встречаю эту проблему, когда я переустанавливаю postgresql, я пытаюсь перезапустить его по типу service postgresql restart , но он сказал, что у меня не было кластера postgresql. Тогда я нахожу этот способ помочь мне :) – mymusise 13 September 2016 в 16:45
  • 9
    Плюс один! Это сработало для меня. – Atul Makwana 6 October 2016 в 23:18
  • 10
    Ну, после трех часов работы в Google, вы, наконец, исправили мою проблему. dpkg-reconfigure locales очень важен. – Don Mums 21 February 2017 в 02:35
  • 11
    это работает на ubuntu windows bash. – ahmadalibaloch 18 April 2018 в 11:21

Мне не удалось решить эту проблему с моим сервером postgres-9.5. После 3-х дней нулевого прогресса, пробовав каждую перестановку исправлений на этом и других сайтах, я решил переустановить сервер и потерять 5 дней работы. Но я повторил проблему в новом экземпляре. Это может дать некоторую перспективу относительно того, как исправить это, прежде чем вы выполните катастрофический подход, который я сделал.

Сначала отключите все параметры ведения журнала в postgresql.conf. Это раздел:

# ERROR REPORTING AND LOGGING

Прокомментируйте все в этом разделе. Затем перезапустите службу.

При перезапуске используйте /etc/init.d/postgresql start или restart, когда мне было полезно, чтобы он работал в режиме суперпользователя при перезапуске. У меня было x-окно, открытое только для этой операции. Вы можете установить этот режим суперпользователя с помощью sudo -i.

Проверить, что к серверу может быть достигнута эта простая команда: psql -l -U postgres

Если это не исправить, тогда рассмотрите this:

Я искал права собственности на многие папки, пытаясь найти решение. Я знал, что, вероятно, я попытаюсь вернуть эти владельцы папок и chmod s еще 2 дня. Если вы уже перепутали эти владельцы папок и не хотите полностью очищать свой сервер, тогда начните отслеживать настройки для всех затронутых папок, чтобы вернуть их в исходное состояние. Возможно, вы захотите попытаться выполнить параллельную установку на другой системе и систематически проверить права собственности и настройки всех папок. Затрудняюсь, но вы можете получить доступ к своим данным.

Как только вы получите доступ, систематически измените каждую соответствующую строку в секции # ERROR REPORTING AND LOGGING файла postgresql.conf. Перезапустите и проверьте. Я обнаружил, что папка по умолчанию для журналов вызывала сбой. Я специально прокомментировал log_directory. Папка по умолчанию, в которой система записывает журналы, равна /var/log/postgresql.

69
ответ дан 29 August 2018 в 16:42

Я делаю это, делая это:

dpkg-reconfigure locales

Выберите предпочтительные локали, затем запустите

pg_createcluster 9.5 main --start

(9.5 - это моя версия postgresql)

/etc/init.d/postgresql start

, а затем он работает!

sudo su - postgres
psql
69
ответ дан 2 September 2018 в 09:22

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

Редактировать: postgresql.conf

sudo nano /etc/postgresql/9.3/main/postgresql.conf

Включить или добавить:

listen_addresses = '*'

Перезапустить механизм базы данных:

sudo service postgresql restart

Также вы можете проверить файл pg_hba.conf

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

И добавить свой адрес сети или хоста:

host    all             all             192.168.1.0/24          md5
70
ответ дан 5 September 2018 в 22:34

Эта проблема возникает из установки пакета postgres без номера версии. Хотя postgres будет установлен, и это будет правильная версия, скрипт для настройки кластера будет работать неправильно; это проблема упаковки.

Если вам удобно с postgres, вы можете запустить скрипт для создания этого кластера и запустить postgres. Однако есть более простой способ.

Сначала очистите старую установку postgres. В настоящее время проблема заключается в 9.1, поэтому я предполагаю, что это то, что вы установили

sudo apt-get remove --purge postgresql-9.1

Теперь просто переустановите

sudo apt-get install postgresql-9.1

Обратите внимание на имя пакета с номером версии. НТН.

72
ответ дан 9 October 2018 в 10:40
  • 1
    это помогло мне с postgres 9.3. – sevenseacat 30 July 2014 в 06:49
  • 2
    Это должен быть принятый ответ, работает с postgres 9.4 / ubuntu 14.10, тоже – Malte 8 April 2015 в 13:09
  • 3
    этот ответ помог мне с перемешиванием postgres 9.4 и 9.3. Круто. – ingo 6 December 2015 в 16:20
  • 4
    Работал для ubuntu 16.04 и postgres 9.5, но сначала должен был очистить каждый пакет postgres. – Evert 27 April 2016 в 15:38
  • 5
    Это действительно потрясающий ответ! А также ужасный пользовательский интерфейс на стороне postgres – user1952500 23 July 2016 в 09:04