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 <tgl@sss.pgh.pa.us>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

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

psql -p 5432

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

+80
26 февр. '13 в 22:11
источник поделиться
7 ответов

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

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

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

Это еще более усложняется в системах Mac OS X ужасным беспорядком различных пакетов PostgreSQL - старинная версия PostgreSQL от Apple, встроенная в ОС, 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 и не могу предложить гораздо больше деталей с этой стороны, не тратя больше времени, чем доступно в настоящее время.

+119
27 февр. '13 в 0:16
источник

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

export PGHOST = localhost

экспорт PGPORT = 5432

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

+14
02 июл. '14 в 19:50
источник

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

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

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

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

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

+8
12 мар. '14 в 12:22
источник

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

+6
08 янв. '16 в 22:36
источник

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

+5
01 мар. '13 в 17:34
источник

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

+2
07 апр. '14 в 14:36
источник

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

0
20 нояб. '17 в 19:37
источник

Посмотрите другие вопросы по меткам или Задайте вопрос