Не удается подключиться к Postgresql через порт 5432
У меня PostgreSQL 9.3 установлен на сервере под управлением Ubuntu Server 14.04.
Если я подключусь к серверу через терминал, я смогу подключиться к psql. Но когда я пытаюсь настроить pgAdmin III для удаленного подключения, я получаю:
Сервер не слушает Сервер не принимает соединения: в отчетах библиотеки соединений не удалось соединиться с сервером: Соединение отклонено. Работает ли сервер на хосте «172.24.3.147» и принимает соединения TCP / IP на порту 5432?
Когда я запускаю на сервере service postgresql status , он дает мне:
Так что, конечно, я упускаю кое-что важное.
При запуске netstat -na на сервере я получаю (полагаю, релевантная часть):
6 ответов
Вам необходимо отредактировать файл postgresql.conf и изменить строку на «listen_addresses».
Этот файл вы можете найти в каталоге /etc/postgresql/9.3/main .
В конфигурации Ubuntu по умолчанию разрешен только интерфейс localhost (или 127.0.0.1), которого достаточно для использования, когда каждый клиент PostgreSQL работает на том же компьютере, что и сервер PostgreSQL. Если вы хотите подключить сервер PostgreSQL с других компьютеров, вы должны изменить эту строку конфигурации следующим образом:
Затем вам также нужно отредактировать файл pg_hba.conf . В этом файле вы установили, с каких компьютеров вы можете подключиться к этому серверу и какой метод аутентификации вы можете использовать. Обычно вам понадобится аналогичная строка:
Пожалуйста, прочтите комментарии в этом файле .
После редактирования postgresql.conf и pg_hba.conf вам необходимо перезапустить сервер postgresql.
РЕДАКТИРОВАТЬ 2: выделенные файлы конфигурации.
Была такая же проблема с psql через подключение к командной строке и pgAdmin, не подключающийся к RDS с AWS. У меня был установлен RDS для публичного доступа. Я убедился, что мои ACL и группы безопасности широко открыты и все еще проблема, поэтому я сделал следующее: sudo find . -name *.conf затем sudo nano ./data/pg_hba.conf затем добавлен в начало директив в файле pg_hba.conf host all all 0.0.0.0/0 md5 и pgAdmin автоматически вошел в меня.
Это также работало в файле pg_hba.conf host all all md5 без IP-адреса, и это также работало с моим IP-адресом host all all /32 md5
Кстати, мой RDS был в моем VPC по умолчанию. У меня был идентичный экземпляр RDS в моем VPC не по умолчанию с идентичными настройками группы безопасности, ACL и группы безопасности для моего VPC по умолчанию, и я не мог заставить его работать. Не знаю почему, но это в другой день.
У меня была такая же проблема после обновления системы MacOS. Решил, обновив postgres с помощью brew. Подробности: похоже, что система пыталась получить доступ к Postgres 11, используя старые настройки Postgres 10. Я уверен, что это была моя ошибка где-то в прошлом, но, к счастью, все уладилось с обновлением выше.
Не забудьте также проверить настройки брандмауэра. после проверки и двойной проверки моих файлов pg_hba.conf и postgres.conf я наконец обнаружил, что мой брандмауэр переопределяет все и, следовательно, блокирует соединения
Вероятно, вам нужно либо открыть порт для доступа к нему в вашей локальной сети (или за ее пределами), либо привязать сетевой адрес к порту (заставить PostgreSQL слушать в вашей локальной сети, а не только на локальном хосте)
Источник
Postgres.app не может запуститься на порту 5432
Я использую http://postgresapp.com. В строке меню отображается ошибка «Не удалось запустить порт 5432». Точно так же, если я пытаюсь запустить сервер с терминала, я получаю:
Я также запустил pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start и получил вывод server starting , но все равно получаю те же ошибки при подключении к psql.
24 ответа
У меня есть еще один запущенный экземпляр postgres, это единственное приложение, интересующееся этим портом. Вы должны использовать netstat и ps, чтобы определить это. Затем остановите экземпляр и удалите его, например, вы могли установить enterpiseDb, это то, что я сделал.
У меня была такая же проблема, и моя была вызвана некоторыми проблемами конфигурации, которые у меня были. Очистка пользовательских конфигураций и переустановка postgres в brew сработали для меня!
Помимо всех полезных ответов, вы также можете взглянуть на официальные инструкции на странице: postgressapp.com/documentation/remove.html
Файл с именем postmaster.pid (в моем каталоге $ PGDATA) препятствовал запуску postgresql. Это был файл зомби, помещенный туда 10 дней назад, и когда я жестоко выключил компьютер (буквально выдернув вилку из розетки), ни один процесс очистки не смог удалить этот файл.
Та же проблема случилась и со мной. Некоторое время у меня был запущен Postgres.app 9.2.4.1. Когда я обновил Mac OS X до 10.8.5, после обязательной перезагрузки она перестала работать. Я пробовал несколько вещей, включая обновление до 9.2.4.3, и ни одна из них после перезагрузки не работала.
Мне пришлось открыть файл /Users/$USER/Library/Application Support/Postgres/var/postgresql.conf и:
- раскомментировать строку unix_socket_permissions = 0777
- раскомментировать и адаптировать строку unix_socket_directory = ‘/tmp’
После перезапуска Postgres.app работал как шарм.
Netstat, ps aux и т.д . ни один не показал 5432 в использовании. Проверено / Библиотека. Нашел старую установку PG9.6 все еще там. Сделал rm -rf и бац. Версия 11 работает нормально.
У меня были такие же проблемы:
В моем случае это был поврежденный файл хоста на моем Mac. Мне не хватало:
Быстрый и простой способ проверить — открыть терминал и ввести:
Дополнительная информация здесь Надеюсь, поможет.
Скорее всего, у вас установлен PostgreSQL, вы удалили его и снова установили. PostgreSQL обычно использовал порт 5432, но если он недоступен, увеличивается до следующего доступного, в данном случае 5433. Итак, вы, вероятно, выбрали этот порт при второй установке.
Думаю, вам стоит проверить файл:
/ etc / services
И настройте строки ниже для ожидаемого номера порта:
postgresql 5432 / udp # База данных PostgreSQL
postgresql 5432 / tcp # База данных PostgreSQL
После этого следует перезагрузить компьютер (самый простой способ).
Как-то совсем забыл, что этот файл сокета будет скрыт из-за точки. Убедитесь, что вы используете ls -A /tmp/.s.PGSQL.5432 , если вы проверяете, есть ли сокет на самом деле.
Я решил эту проблему
- Определение того, что работало на порту 5432, с помощью netstat в CL, который был postgreSQL, а не Postgres
- Я нашел каталог, содержащий postgreSQL, который был root / Library / PostgreSQL
- Я убедился, что приложение не запускалось через Activity Monitor.
- Потом удалил папку и перезагрузился! Все было отлично!
Мой внезапно не запустился, и когда я проверил Console.app, я увидел:
Оказывается, Postgres не запускался, потому что у меня был запущен Wireshark (и X11). После того, как я ушел из Wireshark, все заработало.
У меня была аналогичная проблема при попытке использовать postgresql с рельсами. Обновление моего Gemfile для использования новой версии gem pg решило эту проблему для меня. (gem pg версии 0.16.0 работает). В Gemfile используйте:
Затем запустите следующее, чтобы обновить драгоценный камень
Предположительно, что-то еще заняло порт 5432, поэтому приложение предпочло работать на 5433.
Почему бы просто не подключиться к Pg через порт 5433, если он там работает? У вас есть файл сокета /tmp/.s.PGSQL.5432 , поэтому вы можете подключиться к psql -p 5433 для соединений с сокетом домена UNIX. Он также будет прослушивать тот же порт с TCP / IP, поэтому вы можете использовать psql -h localhost -p 5433 для TCP / IP и ваши приложения будут подключаться к порту 5433 вместо 5432.
Измените свой .psqlrc , чтобы установить новый порт по умолчанию, и вы можете забыть, что это не порт по умолчанию.
Вот что сработало для меня: $ sudo pkill -u postgres
При попытке открыть приложение Postgres возникала та же ошибка относительно сообщения 5432 (в Mac OSX 10.10.5).
Видел, какой PID запускал postgres на этом порту, сделал: $ killall
После этого перезапустил мой Mac и запустил:
$ lsof -i | grep LISTEN еще раз на всякий случай. Увидел, что postgres нигде не запущен, и смог открыть приложение Postgres, не получив этого предупреждения.
Затем я переустановил postgres с $ brew install postgres
ДРУГОЙ ВАРИАНТ :
(Я тоже пробовал это однажды, когда описанный выше подход не работал, и я не мог убить ни один из PID)
Увидел множество процессов postgres, которые потом sudo kill
Теперь все работает нормально.
Также может случиться так, что PID взят. Это произошло со мной, когда компьютер неожиданно перезагрузился.
Если это так, вы должны перейти по адресу:
Вы можете проверить этот путь в диалоге настроек Postgres.app.
А затем просто удалите файл pid
И сервер сразу запускается.
У меня была аналогичная проблема, когда я не мог подключиться к Postgres.app, хотя само приложение сообщило, что оно работает на порту 5432.
Я не уверен, почему, но даже когда я вышел из приложения и проверил, что процессы postgres не выполняются с помощью ps -a. эти файлы существовали:
Мое решение заключалось в том, чтобы удалить эти файлы, а затем снова запустить postgres.app.
Обычно я сталкиваюсь с этой проблемой на своем Mac, и это всегда исправляет ее.
Надеюсь, это будет полезно
Это однострочная команда, которая мгновенно завершает все процессы PostgresSQL.
Это устранило все мои проблемы в Mac OSX Mojave 10.14.1.
Я перепробовал практически все существующие решения этой проблемы. Для меня это всегда происходит, когда в моем MacBook разряжается аккумулятор, даже если компьютер уже спит. Я ковырялся в
/Library/Application\ Support/Postgres/var-9.4 и обнаружил еще один файл postmaster.pid , которого раньше не видел. Я удалил его, и теперь все в порядке! Я использую версию Postgres.app, а не версию brew.
Шаги, которые я предпринял:
- Убедитесь, что postgres.app не запущен.
- Беги rm
/Library/Application\ Support/Postgres/var-9.$X/postmaster.pid
Если у вас нет каталога var-9.$X , просто запустите rm
/Library/Application\ Support/Postgres/postmaster.pid
У меня была именно эта проблема. Когда я запускал which psql , он указывал на клиентские инструменты Postgres, установленные с Lion:
Воспользовавшись подсказкой от Фрэнка Уайлса, я запустил ps auxw | grep post , чтобы подтвердить, что postgres запущен и что он работает на правильном порту, который также показал мне путь postgres.app:
Поэтому я отредактировал .bash_profile, чтобы экспортировать этот каталог. С первого усилия добавил в конец дорожки. Когда я запустил echo $PATH , я увидел, что usr / bin был первым на пути, а which psql по-прежнему указывал путь /usr/bin . В этот момент друг направил меня в правильном направлении:
Запустите новое окно терминала, затем запустите which psql — он должен указывать на расположение postgres.app, а psql должен запустить оболочку postgres. Теперь работает нормально.
Если вы установили Postgres другим способом (например, с www.postgresql.org) и он запускается автоматически при запуске, вы можете запретить запуск этого Postgres, выполнив следующие действия:
СОВЕТ: используйте вкладку для автозаполнения после части com.edb.launchd , чтобы узнать, какая версия загружается.
Перезапустите Postgres.app, и все будет в порядке.
Вы можете остановить процесс, найдя PID с помощью
А затем убить его с помощью
Если вы запускаете свой сервер на компьютере с macOS и установили Postgres через Homebrew, вы можете остановить текущий экземпляр следующим образом:
сервисы brew остановить postgresql
Затем щелкните «Слон» в строке меню в верхней части экрана, и он должен успешно запуститься.
Источник
psql не может подключиться к серверу PostgreSQL (postmaster) по IP и Порту 5432?
пожалуйста, прочитайте, прежде чем отвечать на него как дубликат (как это, возможно, может произойти). Я запускаю сервер postmaster (postgres). См. ниже для вывода «sudo netstat-anp|grep 5432»?
Я могу подключиться с localhost, используя
но когда я пытаюсь подключиться с других хостов с помощью tcp, указав
команду psql: не удалось подключиться к серверу: подключение отказался Работает ли сервер хост XXXXXX и принятие TCP / IP-соединений на порту 5432?
что здесь не так?
что я здесь делаю не так? Машина размещена на Amazon EC2 и имеет открытый порт 5432.
5 ответов
Как показывает ваш вывод netstat, он слушает 127.0.0.1:5432 , который является localhost. Это возможно только из localhost;)
Set listen_addresses=’*’ в свой конфиг и он будет работать.
[редактирование] Другие вещи, чтобы проверить:
- брандмауэр amazon что-нибудь блокирует?
- iptables блокирует что-нибудь?
но сначала убедитесь, что адрес прослушивания правильный, ваш вывод netstat показывает, что он не будет работать так этот.
listen_addresses=’localhost, private_ip’ Исправлена ошибка. Я не смог запустить postmaster server на эластичном IPs. Как только сервер postgres начал o localhost и частные IPs, я смог подключиться.
еще одна проблема, которую я нашел, заключалась в том, что если вы закончите с двумя установками Postgres, второй может выбрать порт по умолчанию (в моем случае это был 5433 i/o 5432). Итак, проверка порта в postgresql.конф может быть хорошей идеей.
я столкнулся с этой проблемой и попробовал всевозможные исправления, которые я нашел в SO, и хочу добавить простое решение, которое сработало для меня, поняв, что это связано с разрешениями в моем случае.
просто, если вы используете сервер psql в Windows, вы изначально ограничены суперпользователем postgres по умолчанию для входа в систему, запуска сервера и т. д.
Итак, сначала попробуйте запустить из командной строки: psql -U postgres -h localhost -p 5432 и введите пароль в командной строке. Если вы удалось войти в систему и сервер работает, тогда это были проблемы с разрешениями. Отсюда вы можете создать роль для себя, которая имеет права входа в любую базу данных, которую вы пытаетесь запустить.
Если ошибка не устранена, рассмотрите возможность проверки postgresql.conf как упоминалось выше, чтобы убедиться, что IP по умолчанию установлен в * или localhost, а порт установлен в 5432 или любой порт, который вы хотите по умолчанию.
Я также столкнулся с той же проблемой. При отладке это не было связано с портом, но из-за некоторых отсутствующих каталогов в папке Postgres.
при обновлении Mac OS (от 10.13.1 -> 10.13.13), некоторые папки в каталоге /usr/local/var/postgres/ удаляется. Исправление состояло в добавлении отсутствующих каталогов:
Источник