Путаница порта postgresql 5433 или 5432?

Я установил postgresql на OSX. Когда я запускаю PSQL, я получаю

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

Однако из / etc / services

postgresql      5432/udp    # PostgreSQL Database
postgresql      5432/tcp    # PostgreSQL Database
#                          Tom Lane <tgl@sss.pgh.pa.us>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433 занята pyrrho, 5432 назначена для pg. Я могу связаться с

psql -p 5432

но почему psql думает, что это 5433, и как мне заставить psql выглядеть в нужном месте по умолчанию?

7 ответов

Решение

/etc/services это только рекомендации, это список известных портов. Это не означает, что на этом порту что-то действительно выполняется или что именованная служба будет работать на этом порту.

В случае PostgreSQL обычно используется порт 5432, если он доступен. Если это не так, большинство установщиков выберут следующий свободный порт, обычно 5433.

Вы можете увидеть, что на самом деле работает, используя netstat инструмент (доступен в OS X, Windows и Linux, с синтаксисом командной строки, варьирующимся по всем трем).

Это еще более усложняется в системах Mac OS X из-за ужасного беспорядка различных пакетов PostgreSQL - древней версии Apple, встроенной в ОС PostgreSQL, Postgres.app, Homebrew, Macports, установщика EnterpriseDB и т. Д. И т. Д.

В конечном итоге пользователь устанавливает Pg и запускает сервер из одной упаковки, но использует psql а также libpq клиент из другой упаковки. Обычно это происходит, когда они запускают Postgres.app или homebrew Pg и соединяются с psql который поставляется с ОС. Они не только иногда имеют разные порты по умолчанию, но и Pg, поставляемый с Mac OS X, имеет другой путь к сокету Unix по умолчанию, поэтому даже если сервер работает на том же порту, он не будет слушать тот же сокет Unix.

Большинство пользователей Mac работают с этим, просто используя tcp / ip с psql -h localhost, Вы также можете указать порт при необходимости, например, psql -h localhost -p 5433, Возможно, у вас запущено несколько экземпляров PostgreSQL, поэтому убедитесь, что вы подключаетесь к нужному, используя select version() а также SHOW data_directory;,

Вы также можете указать каталог сокетов Unix; проверить unix_socket_directories настройку экземпляра PostgreSQL, к которому вы хотите подключиться, и укажите это с psql -hнапример,psql -h /tmp,

Более чистое решение - исправить вашу систему PATH таким образом psql а также libpq связанный с PostgreSQL, который вы на самом деле используете, это то, что находится первым на PATH, Детали этого зависят от вашей версии Mac OS X и от того, какие пакеты Pg вы установили. Я не пользуюсь Mac и не могу предложить гораздо больше деталей в этой области, не тратя больше времени, чем доступно в настоящее время.

Быстрый ответ на OSX, установите переменные среды.

экспорт PGHOST=localhost

экспорт PGPORT=5432

Или все, что вам нужно.

Порт Postgres по умолчанию обычно настраивается в:

sudo vi /<path to your installation>/data/postgresql.conf

На Ubuntu это может быть:

sudo vi /<path to your installation>/main/postgresql.conf

Ищи port в этом файле.

Похоже, что одна из наиболее распространенных причин этого заключается в том, что вы устанавливаете новую версию PostgreSQL без остановки службы существующей установки. Это тоже было моей головной болью. Перед установкой или обновлением, особенно в OS X и использованием установщика одним щелчком из Enterprise DB, убедитесь, что вы проверили состояние старой установки, прежде чем продолжить.

Благодаря комментарию a_horse_with_no_name я изменил определение PGPORT на 5432 в pg_env.sh. Это решило проблему для меня. Я не знаю, почему Postgres изначально установил его как 5433, когда он размещал сервис на 5432.

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

Для меня в PgAdmin 4 в Mac OS High Sierra, щелкнув базу данных PostrgreSQL10 в разделе " Серверы" в левом столбце, а затем на вкладке " Свойства ", отобразился 5433 в качестве порта в разделе " Подключение". (Я не знаю почему, потому что я выбрал 5432 во время установки). В любом случае, я щелкнул значок " Изменить" на вкладке " Свойства ", изменил значение на 5432, сохранил, и это решило проблему. Пойди разберись.

Другие вопросы по тегам