путаница портов 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 94

7 ответов:

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

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

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

это еще больше усложняется в системах Mac OS X ужасным беспорядком различных пакетов PostgreSQL-древней версии Apple PostgreSQL, встроенной в ОС, Postgres.приложение, доморощенного, системы MacPorts, в файле EnterpriseDB установки и т. д. и т. п.

в конечном итоге происходит то, что пользователь устанавливает Pg и запускает сервер из одного пакета, но использует psql и libpq клиент из другой упаковки. Обычно это происходит, когда они работает Постгрес.приложение или доморощенный 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 X, и что ПГ пакеты, которые вы установили. Я не использую 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 и с помощью установщика one click из Enterprise DB, убедитесь, что вы проверили состояние старой установки, прежде чем продолжить.

спасибо @a_horse_with_no_name ' s комментарий, Я изменил определение PGPORT на 5432 in pg_env.sh. это исправило проблему для меня. Я не знаю, почему postgres установил его как 5433 изначально, когда он размещал службу в 5432.

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

для меня PgAdmin 4 on Mac OS High Sierra, нажмите PostrgreSQL10 под свойства, которые 5432, спасли, и это решило проблему. Иди разберись.