путаница портов 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.приложение, доморощенного, системы 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.