Я установил об Джанго стека, которая включала в PostgreSQL 8.4.
Когда я выполнить команду psql-у Постгреса, я получаю следующую ошибку:
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
Что это дает?
на "доказательства", что ПГ работает:
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
без номера версии. Хотя сервер
будет установлен и это будет самый правильный вариант, скрипт для установки кластера не будет работать правильно; это'с проблемой упаковки.
Если вы'повторно комфортно с сервер
есть сценарий, вы можете создать этот кластер и получить сервер
работает. Однако, там'ы более простой способ.
Сначала очистить старые установки Постгреса. Этот вопрос в настоящее время лежит на 9.1, так что смею предположить, что's то, что вы установили
sudo apt-get remove --purge postgresql-9.1
Теперь просто переустановить
sudo apt-get install postgresql-9.1
Внимание имя пакета с номером версии. НТН.
Сообщение об ошибке относится к Unix-сокета, так что вам нужно настроить ваши команды netstat ссылки, чтобы не исключать их. Так что попробуйте без опции -Т
:
netstat -nlp | grep 5432
Я бы предположил, что сервер на самом деле слушает на сокете в/tmp/.С. Список pgsql.5432
, а не в/var/работа/в PostgreSQL/.С. Список pgsql.5432
, что ваш клиент пытается подключиться. Это типичная проблема при использовании ручной компиляции или стороннего сервера PostgreSQL пакеты в Debian или Ubuntu, потому что источник по умолчанию для Unix-сокета, каталог /tmp
, которая Но в Debian упаковки изменения в файл/var/работа/в PostgreSQL`.
Возможные способы:
/опт/djangostack-1.3-0/PostgreSQL в качестве/bin/psql в
). Возможно, удалить с Ubuntu-поставляется полностью пакеты (может быть сложно, потому что других обратных зависимостей).-ч в /tmp
или эквивалент PGHOST
параметр, чтобы указать правильный каталог.Это работает для меня:
Редактировать: в PostgreSQL.конф
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
Вы можете использовать команду psql-у Постгреса -ч от localhost, чтобы заставить соединение произойдет через TCP вместо доменных сокетов Unix; Ваш
для` вывода показывает, что PostgreSQL сервер слушает на localhost's порт 5432.
Вы можете выяснить, какой локальный сокет Unix используется на сервере PostgrSQL с помощью различных invocavtion из можно:
netstat -lp --protocol=unix | grep postgres
В любом случае, интерфейсы, на которых PostgreSQL прослушивание серверу настраиваются в файле PostgreSQL.конф`.
Я заставить его работать, делая это:
dpkg-reconfigure locales
Выберите предпочтительный районов работать
pg_createcluster 9.5 main --start
(9.5-моя версия PostgreSQL)
/etc/init.d/postgresql start
и тогда он работает!
sudo su - postgres
psql
Мне пришлось скомпилировать PostgreSQL версии 8.1 в squeeze Debian потому, что я использую открытый проект, который основан на OpenACS и не будет работать на более поздних версиях PostgreSQL.
Компиляция конфигурации по умолчанию ставит unix_socket
в /tmp
, но открыть проект, который опирается на PostgreSQL, не сработает, потому что он ищет unix_socket
в в/var/работа/в PostgreSQL
.
Есть параметр в файле PostgreSQL.confи установить расположение гнезда. Моя проблема была в том, что я мог бы установить на
/tmpи
psql Вработал, но не открытый проект, или я могу установить его в
в/var/работа/в PostgreSQLи
команду psql` не будет работать, но открыть проект.
Одно разрешение к этой проблеме, чтобы установить розетку для в/var/работа/СУБД PostgreSQL и затем выполните команду psql, основанные на Питер'ы предложение, как:
psql -h /var/run/postgresql
Это работает локально, используя местные разрешения. Единственным недостатком является то, что она больше набирать, чем просто"в psql в " и;.
Другое предположение, что кто-то должен был создать символическую ссылку между двумя точками. Этот тоже работал, но связь исчезла после перезагрузки. Это может быть проще просто использовать аргумент-ч, однако, я создал символическую ссылку из скрипта PostgreSQL в в/etc/инит.д
. Я сделал символическую ссылку Создать команду в "СТАРТ" в разделе. Конечно, когда я остановить и запустить или перезапустить команду, он будет пытаться воссоздать существующая символическая ссылка, но другие, чем предупреждение, то, вероятно, это не повредит.
В моем случае, вместо:
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/работа/в PostgreSQL/.С. Список pgsql.5432
в в PostgreSQL.конф
.
Если вашу службу Postgres запущен и работает без каких-либо ошибка или нет ошибки при запуске сервиса Postgres и еще вы получаете упомянул об ошибке, выполните следующие действия
pg_lsclusters
буду перечислять все Постгреса кластеров работает на вашем устройственапример:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
скорее всего, информация будет в вашем случае и службу Postgres
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
#restart postgres
sudo service postgres restart
Если этот процесс не будет успешным, он будет выдавать ошибку. Вы можете просмотреть журнал ошибок на файл/var/журнал/в PostgreSQL/PostgreSQL в-9.6-главная.журнал`
Моя ошибка была:
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`
Убедитесь, что сервер
владелец в/var/lib в/с PostgreSQL/version_no/главный
Если нет, бегите
sudo chown postgres -R /var/lib/postgresql/9.6/main/
Оказалось, что я ошибочно удалил пользователя postgres с помощью SSL-сертификата группы. Запустите приведенный ниже код, чтобы исправить проблему группы пользователей и исправить разрешения
#set user to group back with
sudo gpasswd -a postgres ssl-cert
# Fix ownership and mode
sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
# now postgresql starts! (and install command doesn't fail anymore)
sudo service postgres restart
Решение:
Сделать это
export LC_ALL="en_US.UTF-8"
и это. (9.3 это мои текущие версии PostgreSQL. Напиши свою версию!)
sudo pg_createcluster 9.3 main --start
В моем случае это было вызвано опечатку я сделал во время редактирования файла /etc/postgresql и/9.5/главная/файле 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
Но МД5 должны были быть в нижнем регистре с MD5
:
# Database administrative login by Unix domain socket
local all postgres md5
Мне не удалось решить эту проблему с моей Постгреса-9.5 сервер. После 3 дней мы топчемся на месте, пытаясь каждый перестановка исправить на этом и других сайтах я решил переустановить сервер и терять 5 дней работы. Но, я повторить эту проблему на новом экземпляре. Это может дать общее представление о том, как исправить это, прежде чем принимать катастрофический подход я сделал.
Во-первых, отключить все лесозаготовки параметры в PostgreSQL.конф. Это раздел:
# ERROR REPORTING AND LOGGING
Закомментируйте все в этом разделе. Перезапустите службу.
При перезапуске, используйте в/etc/инит.д/начать с PostgreSQLили
перезагрузка`
Я нашел это полезно, чтобы быть в режиме суперпользователя во время перезагрузки. У меня был х-окно открыто только для этой операции. Вы можете установить, что режим суперпользователя с помощью команды sudo -я.
Убедитесь, что сервер может быть достигнуто с помощью этой простой команды: команду psql-л-у Постгреса
Если это не'т исправить это, то рассматривайте это:
Я менял собственности на многих папках, пытаясь найти решение. Я знал, что я'д, вероятно, пытаются отменить эти папки права собственности и выдать это за 2 дня. Если вы уже запутались с тех папок собственности и Дон'т хотите, чтобы полностью очистить ваш сервер, после чего начните отслеживать параметры для всех затронутых папки, чтобы вернуть их в исходное состояние. Возможно, вы захотите попробовать сделать параллельную установку на другой системе и систематически проверять владения и настройки всех папок. Утомительно, но вы можете быть в состоянии получить доступ к вашим данным.
Как только вы получите доступ, систематически менять каждой соответствующей строки # ошибка отчетности и ведения журнала
участок в PostgreSQL.файл conf
. Перезагрузить и проверить. Я обнаружил, что папка по умолчанию для журналов был причиной сбоя. Я специально закомментирована каталог_журнала
. Папка по умолчанию сбрасывает бревна на потом в/var/журнал/в PostgreSQL
.
Я нашел удаление Постгреса, звучит неубедительно. Это помогает решить мою проблему:
команду sudo systemctl начать с PostgreSQL
команду sudo systemctl включить в PostgreSQL
Подробную информацию можно найти на сайте DigitalOcean ИКТ здесь.
Это не совсем связано с вопросом, так как я'м через колбу, но это было точное сообщение об ошибке я получаю, и это был самый актуальный поток, чтобы получить идеи.
Моя установка: Подсистема Windows для Linux, Докер-сочинять ж/ Makefile и ж/ файла Docker, фляга, PostgreSQL (с помощью схемы, состоящей из таблиц)
Для подключения к Postgres, настройка строки подключения такой:
из колбы импорт колбу приложение = фляга(__имя__) приложение.конфиг['SQLALCHEMY_DATABASE_URI'] = "postgresql+psycopg2://<user>:<password>@<container_name_in_docker-compose.yml>/<database_name>"
Примечание: Я никогда не получал IP-адрес (например, localhost, 127.0.0.1) работать, используя любой метод в этой теме. Идея использования имени контейнера вместо localhost пришло отсюда: https://github.com/docker-library/postgres/issues/297
Набор схемы:
от импорта метаданных с SQLAlchemy дБ = с SQLAlchemy(приложения, метаданные=метаданные(схеме=" и<имя_схемы> наша"))
Установить путь поиска для ваших функций при настройке сессии:
дБ.сессии.выполнить("в набор search_path в <имя_схемы> и")
У меня была таже проблема Питера Eisentraut описано. С помощью команды netstat -НЛП команда | команда grep 5432, я мог видеть, что сервер прослушивает сокет
/tmp/и.С. Список pgsql.5432`.
Чтобы это исправить, просто отредактируйте PostgreSQL свой`.конф файл и измените следующие строки:
listen_addresses = '*'
unix_socket_directories = '/var/run/postgresql'
Теперь запустите `в PostgreSQL-9.4 сервис "рестарт" (замена 9-4 с вашей версии), и удаленные подключения должны работать сейчас.
Теперь, чтобы разрешить локальные подключения, просто создайте символическую ссылку на каталог/var/работа/в PostgreSQL`.
ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.PGSQL.5432
Дон'т забудьте убедиться, что ваш файл pg_hba.conf` и это тоже правильно настроен.
У меня была такая же проблема (на Ubuntu 15.10 (коварный)) судо найти / -имя 'файл pg_hba..конф' -печать
или `судо найти / -имя 'СУБД PostgreSQL.конф' -печати, оказались пустыми. До этого казалось, что были установлены несколько экземпляров программы.
Возможно, похожие когда вы видите, как установленных, или проблемы с зависимостями листинг
.../postgresql
.../postgresql-9.x
и так далее.
В этом случае вы должны судо apt-получить каждый пакет autoremove
1 к 1.
После этого к письмо, и вы будете прекрасны. Особенно когда дело доходит до импорта ключа и добавления в исходный список
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 -
Если не использовать хитрый, заменить коварный
с вашего выпуска, я.е с выходом команду -КС
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
Найти свой файл:
sudo find /tmp/ -name .s.PGSQL.5432
Результат:
/tmp/.s.PGSQL.5432
Войти как пользователь Postgres:
su postgres
psql -h /tmp/ yourdatabase
В моем случае, все, что я должен был сделать это:
sudo service postgresql restart
а потом
sudo -u postgres psql
Это работало просто отлично. Надеюсь, что это помогает. Ура :) .
После долгих изнурительных попыток, я нашел решение, основываясь на других постах!
dpkg -l | grep postgres
apt-get --purge remove <package-founded-1> <package-founded-2>
whereis postgres
whereis postgresql
sudo rm -rf <paths-founded>
sudo userdel -f postgres