Не удается подключиться к 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# 

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

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

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

     sudo apt-get remove --purge postgresql-9.1 

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

     sudo apt-get install postgresql-9.1 

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

    Сообщение об ошибке относится к сокету 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 ). Возможно, вообще удалите пакеты, поставляемые Ubuntu (может быть сложно из-за других обратных зависимостей).
    • Исправьте каталог сокетов стороннего пакета, совместимый с Debian / Ubuntu.
    • Используйте -H localhost для подключения через TCP / IP.
    • Используйте -h /tmp или эквивалентную настройку PGHOST чтобы указать на правый каталог.
    • Не используйте сторонние пакеты.

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

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

     netstat -lp --protocol=unix | grep postgres 

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

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

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

    Меня устраивает:

    Изменить: 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

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

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

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

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

     psql -h /var/run/postgresql 

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

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

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

     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 .

    я заставляю его работать, делая это:

     dpkg-reconfigure locales 

    и выберите предпочитаемые локали

     pg_createcluster 9.5 main --start 

    (9.5 – моя версия postgresql)

     /etc/init.d/postgresql start 

    и тогда это сработает!

     sudo su - postgres psql 

    Решение:

    Сделай это

     export LC_ALL="en_US.UTF-8" 

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

     sudo pg_createcluster 9.3 main --start 

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

    Я изменился:

     # Database administrative login by Unix domain socket local all postgres peer 

    чтобы:

     # Database administrative login by Unix domain socket local all postgres MD5 

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

     # Database administrative login by Unix domain socket local all postgres md5 

    Имея ту же проблему, я попробовал что-то другое:

    запуск вручную postgresql daemon Я получил:

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

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

    Это исправлено!

    PS: следует полный журнал ошибок

     $ sudo service postgresql start * Starting PostgreSQL 9.1 database server * The PostgreSQL server failed to start. Please check the log output: 2013-06-26 15:05:11 CEST FATAL: could not create shared memory segment: Invalid argument 2013-06-26 15:05:11 CEST DETAIL: Failed system call was shmget(key=5432001, size=57237504, 03600). 2013-06-26 15:05:11 CEST HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter. You can either reduce the request size or reconfigure the kernel with larger SHMMAX. To reduce the request size (currently 57237504 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections. If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for. The PostgreSQL documentation contains more information about shared memory configuration. 

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

     sudo chmod 700 main 

    У меня была такая же проблема, о которой описал Питер Айзентраут. Использование netstat -nlp | grep 5432 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 настроен правильно.

    Я пробовал все вышеперечисленное, пока я не последовал за письмом.

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

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

    … / postgresql … / postgresql-9.x и так далее.

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

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

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

    если не использовать хитрые изменения хитрый в вашем выпуске. (выход lsb_release -c)

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

    КОНЕЦ —

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

    ВЫВОД

      Creating new cluster 9.3/main ... config /etc/postgresql/9.3/main data /var/lib/postgresql/9.3/main locale en_US.UTF-8 socket /var/run/postgresql port 5432 

    источник моих решений (кредиты) http://technobytz.com/install-postgresql-9-3-ubuntu.html

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

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

    # ERROR REPORTING AND LOGGING

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

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

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

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

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

    Найдите свой файл:

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

    Resut:

    /tmp/.s.PGSQL.5432

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

     su postgres psql -h /tmp/ yourdatabase 

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

     sudo service postgresql restart 

    а потом

     sudo -u postgres psql 

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