Путаница порта 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 ответов
/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 и не могу предложить гораздо больше деталей в этой области, не тратя больше времени, чем доступно в настоящее время.
Быстрый ответ на 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 и использованием установщика одним щелчком из Enterprise DB, убедитесь, что вы проверили состояние старой установки, прежде чем продолжить.
Благодаря комментарию a_horse_with_no_name я изменил определение PGPORT на 5432 в pg_env.sh. Это решило проблему для меня. Я не знаю, почему Postgres изначально установил его как 5433, когда он размещал сервис на 5432.
Я тоже столкнулся с этой проблемой, и в итоге у меня одновременно работали два сервера postgres. Я удалил один из них и изменил порт обратно на 5432 и теперь работает нормально.
Для меня в PgAdmin 4 в Mac OS High Sierra, щелкнув базу данных PostrgreSQL10 в разделе " Серверы" в левом столбце, а затем на вкладке " Свойства ", отобразился 5433 в качестве порта в разделе " Подключение". (Я не знаю почему, потому что я выбрал 5432 во время установки). В любом случае, я щелкнул значок " Изменить" на вкладке " Свойства ", изменил значение на 5432, сохранил, и это решило проблему. Пойди разберись.