/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 и не могу предоставить более подробную информацию об этой стороне, не потратив больше времени, чем доступно в настоящее время.
PGPORT
: postgresql.org/docs/current/static/libpq-envars.html