Postgresql port confusion 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 <[email protected]>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433 занята пирро, 5432 присваивается pg. Я могу подключиться к

psql -p 5432

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

Ответ 1

/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 и не могу предложить гораздо больше деталей в этой области, не тратя больше времени, чем доступно в настоящее время.

Ответ 2

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

export PGHOST = localhost

экспорт PGPORT = 5432

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

Ответ 3

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

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

В Ubuntu это может быть:

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

Найдите port в этом файле.

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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