Я установил стек 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#
postgresql
Ассаф Лави
источник
источник
Ответы:
Эта проблема возникает из-за установки
postgres
пакета без номера версии. Хотяpostgres
будет установлен и будет правильной версии, скрипт для настройки кластера не будет работать правильно; это проблема упаковки.Если вам удобно,
postgres
есть скрипт, который вы можете запустить, чтобы создать этот кластер иpostgres
запустить его. Тем не менее, есть более простой способ.Сначала удалите старую установку postgres. В настоящее время проблема заключается в 9.1, поэтому я буду считать, что это то, что вы установили
Теперь просто переустановите
Запишите название пакета с номером версии. НТН.
источник
Сообщение об ошибке относится к сокету Unix-домена, поэтому вам нужно настроить
netstat
вызов, чтобы не исключать их. Так что попробуйте без опции-t
:Я предполагаю, что сервер на самом деле слушает сокет,
/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 (это может быть сложно из-за других обратных зависимостей).-H localhost
Вместо этого используйте для подключения через TCP / IP.-h /tmp
или эквивалентнуюPGHOST
настройку, чтобы указать на правильный каталог.источник
Это работает для меня:
Изменить: postgresql.conf
Включить или добавить:
Перезапустите ядро базы данных:
Также вы можете проверить файл
pg_hba.conf
И добавьте адрес своей сети или хоста:
источник
Вы можете использовать,
psql -U postgres -h localhost
чтобы заставить соединение происходить по TCP вместо доменных сокетов UNIX; вашnetstat
вывод показывает, что сервер PostgreSQL прослушивает порт 5432 локального хоста.Вы можете узнать, какой локальный сокет UNIX используется сервером PostgrSQL, используя другой вызов netstat :
В любом случае, интерфейсы, на которых слушает сервер PostgreSQL, настроены в
postgresql.conf
.источник
Просто создайте мягкую ссылку, подобную этой:
источник
Я заставляю это работать этим:
Выберите предпочитаемые локали и запустите
(9.5 - это моя версия postgresql)
и тогда это работает!
источник
service postgresql restart
но он говорит, что у меня не было никакого кластера postgresql. Тогда я найду способ выручить меня :)dpkg-reconfigure locales
это чертовски важно.Мне пришлось скомпилировать PostgreSQL 8.1 на Debian Squeeze, потому что я использую Project Open, который основан на OpenACS и не будет работать на более поздних версиях PostgreSQL.
Конфигурация компиляции по умолчанию помещает
unix_socket
в систему/tmp
, но проект Open, который основывается на PostgreSQL, не будет работать , так как это выглядит дляunix_socket
на/var/run/postgresql
.Есть настройка,
postgresql.conf
чтобы установить местоположение сокета. Моя проблема заключалась в том, что либо я мог установить/tmp
иpsql
работать, но не открыть проект, либо я мог установить его/var/run/postgresql
иpsql
не работать, но открытие проекта сделало.Одно из решений этой проблемы состоит в том, чтобы установить сокет для
/var/run/postgresql
и затем запуститьpsql
, основываясь на предложении Питера, как:Это выполняется локально с использованием локальных разрешений. Единственным недостатком является то, что он больше печатает, чем просто "psql".
Другое предложение, которое сделал кто-то, состояло в том, чтобы создать символическую связь между этими двумя местоположениями. Это также сработало, но ссылка исчезла после перезагрузки. Возможно, проще использовать аргумент -h, однако я создал символическую ссылку из скрипта PostgreSQL
/etc/init.d
. Я разместил символическую команду создания ссылки в разделе «Пуск». Конечно, когда я запускаю команду остановки и запуска или перезапуска, она будет пытаться воссоздать существующую символическую ссылку, но, кроме предупреждающего сообщения, в этом нет никакого вреда.В моем случае вместо:
у меня есть
и явно установить unix_socket
/var/run/postgresql/.s.PGSQL.5432
вpostgresql.conf
.источник
Решение:
Сделай это
и это. ( 9.3 - это моя текущая версия PostgreSQL. Напишите свою версию!)
источник
Если ваша служба Postgres запущена и работает без каких-либо ошибок или при запуске службы Postgres нет ошибок, но вы все еще получаете указанную ошибку, выполните следующие действия.
Шаг 1: Запуск
pg_lsclusters
покажет все кластеры postgres, работающие на вашем устройственапример:
Скорее всего, статус будет ниже в вашем случае и сервис Postgres
Шаг 2: перезапустите pg_ctlcluster
Шаг 3: Шаг 2 не удался и выдал ошибку
Если этот процесс не будет успешным, он выдаст ошибку. Вы можете увидеть журнал ошибок на
/var/log/postgresql/postgresql-9.6-main.log
Моя ошибка была:
Шаг 4: проверьте право собственности на postgres
Убедитесь, что
postgres
это владелец/var/lib/postgresql/version_no/main
Если нет, запустите
Шаг 5: Проверьте, что пользователь postgres принадлежит к группе пользователей ssl-cert
Оказалось, что я ошибочно удалил пользователя Postgres из
ssl-cert
группы. Запустите приведенный ниже код, чтобы исправить проблему группы пользователей и исправить разрешенияисточник
В моем случае это было вызвано опечаткой, которую я сделал при редактировании
/etc/postgresql/9.5/main/pg_hba.conf
Я изменил:
чтобы:
Но
MD5
должен был быть в нижнем регистреmd5
:источник
trusted
вместоtrust
, и не перезапустил службу, и он сломался только на следующий день, когда я уже забыл, что я изменилЯ обнаружил, что удаление Postgres звучит неубедительно. Это помогает решить мою проблему:
Запустите сервер postgres:
Убедитесь, что сервер запускается при загрузке:
Подробную информацию можно найти на сайте DigitalOcean здесь.
источник
Я не смог решить эту проблему с моим сервером postgres-9.5. После 3 дней нулевого прогресса, пробуя каждую перестановку исправлений на этом и других сайтах, я решил переустановить сервер и потерять 5 дней работы. Но я повторил проблему на новом экземпляре. Это может дать некоторое представление о том, как это исправить, прежде чем использовать катастрофический подход, который я сделал.
Во-первых, отключите все параметры ведения журнала в postgresql.conf. Это раздел:
Закомментируйте все в этом разделе. Затем перезапустите сервис.
При перезапуске используйте
/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
.источник
Возможно, это могло произойти, потому что вы изменили права доступа к
/var/lib/postgresql/9.3/main
папке.Попробуйте изменить его на 700, используя команду ниже:
источник
Это не совсем связано с вопросом, так как я использую Flask, но это была именно та ошибка, которую я получил, и это была самая важная тема для получения идей.
Моя установка: подсистема Windows для Linux, Docker-compose с make-файлом с dockerfile, Flask, Postgresql (с использованием схемы, состоящей из таблиц)
Чтобы подключиться к postgres, настройте строку подключения следующим образом:
ПРИМЕЧАНИЕ. У меня никогда не было IP-адреса (например, localhost, 127.0.0.1) для работы с использованием какого-либо метода в этой теме. Идея использования имени контейнера вместо localhost пришла отсюда: https://github.com/docker-library/postgres/issues/297
Установите вашу схему:
Задайте путь поиска для своих функций при настройке сеанса:
источник
У меня была та же самая проблема, которую описал Питер Эйзентро. Используя
netstat -nlp | grep 5432
команду, я увидел, что сервер прослушивает сокет/tmp/.s.PGSQL.5432
.Чтобы это исправить, просто отредактируйте ваш
postgresql.conf
файл и измените следующие строки:Теперь запустите
service postgresql-9.4 restart
(замените 9-4 вашей версией), и удаленные соединения должны теперь работать.Теперь, чтобы разрешить локальные подключения, просто создайте символическую ссылку на
/var/run/postgresql
каталог.Не забудьте также убедиться, что ваш компьютер
pg_hba.conf
правильно настроен.источник
В моем случае все, что мне нужно было сделать, это:
а потом
Это работало просто отлично. Надеюсь, это поможет. Ура :).
источник
Найдите свой файл:
Результат:
Войти как пользователь postgres:
источник
У меня была такая же проблема (на Ubuntu 15.10 (хитрый)).
sudo find / -name 'pg_hba.conf' -print
илиsudo find / -name 'postgresql.conf' -print
оказался пустым. До этого казалось, что было установлено несколько экземпляров postgresql.Вы можете иметь подобное, когда вы видите, как установлено, или список проблем с зависимостями
и так далее.
В этом случае вы должны
sudo apt-get autoremove
каждый пакет 1 на 1.Тогда следуйте этому письму и у вас все будет хорошо. Особенно когда речь идет об импорте ключей и добавлении их в список источников.
Если вы не используете хитрый, замените его
wily
своим выпуском, т.е.lsb_release -cs
И тогда вы должны быть в порядке и иметь возможность подключаться и создавать пользователей.
Ожидаемый результат:
Источник моих решений (кредиты)
источник
Имея ту же проблему, я попробовал что-то другое:
Запустив демон postgresql вручную, я получил:
Так что я сделал, чтобы установить нижний предел для
shared_buffers
иmax_connections
вpostgresql.conf
иrestart
обслуживание.Это решило проблему!
Вот полный журнал ошибок:
источник
После многих изнурительных попыток я нашел решение, основанное на других постах!
источник
Создайте каталог postgresql внутри run и затем выполните следующую команду.
источник
Просто добавьте / tmp unix_socket_directories
postgresql.conf
источник