Я установил 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 по умолчанию выглядеть в нужном месте?
postgresql
port
psql
высокая пропускная способность
источник
источник
PGPORT
: postgresql.org/docs/current/static/libpq-envars.htmlОтветы:
/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 и не могу предоставить более подробную информацию об этой стороне, не потратив больше времени, чем доступно в настоящее время.источник
Быстрый ответ на OSX, установите переменные среды.
Или что вам нужно.
источник
Порт Postgres по умолчанию обычно настраивается в:
В Ubuntu это может быть:
Ищите
port
в этом файле.источник
~/PostgreSQL/data/pg96
Благодаря @a_horse_with_no_name «s комментарий , я изменил свое определение PGPORT 5432 в pg_env.sh. Это устранило проблему для меня. Я не знаю, почему postgres изначально установил его как 5433, когда он размещал службу на 5432.
источник
Похоже, что одна из наиболее частых причин этого - установка новой версии PostgreSQL без остановки службы существующей установки. Это тоже было моей головной болью. Перед установкой или обновлением, особенно в OS X и с использованием программы установки в один клик из Enterprise DB, убедитесь, что вы проверили статус старой установки, прежде чем продолжить.
источник
Я тоже столкнулся с этой проблемой, в итоге у меня было два сервера postgres, работающих одновременно. Я удалил один из них и снова изменил порт на 5432, и теперь он работает нормально.
источник
Для меня в PgAdmin 4 в Mac OS High Sierra , щелкнув базу данных PostrgreSQL10 в разделе « Серверы» в левом столбце, затем на вкладке « Свойства », отобразился 5433 как порт в разделе « Подключение» . (Не знаю почему, потому что при установке я выбрал 5432). В любом случае, я щелкнул значок « Изменить» на вкладке « Свойства », изменил его на 5432 , сохранил, и это решило проблему. Иди разберись.
источник