postgresql 포트 혼란 5433 또는 5432?


128

OSX에 postgresql을 설치했습니다. 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을 기본적으로 올바른 위치에 보이게합니까?


5
환경 변수 PGPORT가 정의되어 있는지 확인하십시오 . postgresql.org/docs/current/static/libpq-envars.html
a_horse_with_no_name

답변:


187

/etc/services권고 일 뿐이며 잘 알려진 포트 목록입니다. 실제로 해당 포트에서 실행되고 있거나 명명 된 서비스가 해당 포트에서 실행된다는 의미는 아닙니다.

PostgreSQL의 경우 사용 가능한 경우 포트 5432를 사용하는 것이 일반적입니다. 그렇지 않은 경우 대부분의 설치 관리자는 다음 사용 가능한 포트 (일반적으로 5433)를 선택합니다.

netstat도구를 사용하여 실제로 실행중인 항목을 볼 수 있습니다 (OS X, Windows 및 Linux에서 사용 가능하며 명령 행 구문이 세 가지 모두 다름).

이것은 OS, Postgres.app, Homebrew, Macports, EnterpriseDB 설치 프로그램 등에 내장 된 Apple의 고대 버전의 PostgreSQL과 같은 다른 PostgreSQL 패키지의 끔찍한 혼란으로 인해 Mac OS X 시스템에서 더욱 복잡합니다.

결국 사용자는 Pg를 설치하고 하나의 패키지에서 서버를 시작하지만 다른 패키지의 클라이언트 psqllibpq클라이언트를 사용한다는 것 입니다. 일반적으로 Postgres.app 또는 homebrew Pg를 실행 psql하고 OS와 함께 제공된 것과 연결될 때 발생합니다 . 이것들은 때때로 다른 기본 포트를 가지고있을뿐만 아니라, Mac OS X과 함께 제공된 Pg는 다른 기본 유닉스 소켓 경로를 가지고 있습니다 . 따라서 서버가 같은 포트에서 실행 되더라도 동일한 유닉스 소켓을 듣지 않을 것입니다.

대부분의 Mac 사용자는 tcp / ip를 사용하여이 문제를 해결합니다 psql -h localhost. 필요한 경우 포트를 지정할 수도 있습니다 (예 :) psql -h localhost -p 5433. 여러 PostgreSQL 인스턴스가 실행 중일 수 있으므로 select version()and 를 사용하여 올바른 인스턴스에 연결해야합니다 SHOW data_directory;.

유닉스 소켓 디렉토리를 지정할 수도 있습니다. 체크 unix_socket_directories당신이에 연결하여 그 지정하고자하는 PostgreSQL의 인스턴스의 설정 psql -h예를 psql -h /tmp.

청소기 솔루션은 시스템을 수정하는 것입니다 PATH있도록 psql하고 libpq실제로 실행중인 PostgreSQL의와 관련 처음에 발견 무슨이다 PATH. 자세한 내용은 Mac OS X 버전과 설치 한 Pg 패키지에 따라 다릅니다. 저는 Mac을 사용하지 않으며 현재 사용 가능한 시간보다 더 많은 시간을 소비하지 않으면 서 그 측면에서 더 자세한 정보를 제공 할 수 없습니다.


23

OSX에 대한 빠른 답변, 환경 변수 설정

>export PGHOST=localhost

>export PGPORT=5432

또는 당신이 필요로하는 무엇이든.


16

Postgres의 기본 포트는 일반적으로 다음과 같이 구성됩니다.

sudo vi /<path to your installation>/data/postgresql.conf

우분투에서 이것은 다음과 같습니다.

sudo vi /<path to your installation>/main/postgresql.conf

port이 파일에서 검색 하십시오.


BigSQL 배포판이있는 Mac OSX에서는 다음과 같습니다.~/PostgreSQL/data/pg96
Shane


7

이것이 발생하는 가장 일반적인 이유 중 하나는 기존 설치 서비스를 중지하지 않고 새 버전의 PostgreSQL을 설치하는 것입니다. 이것은 또한 내 두통이었다. 특히 OS X에서 설치 또는 업그레이드하기 전에 Enterprise DB의 원 클릭 설치 프로그램을 사용하기 전에 계속 진행하기 전에 이전 설치 상태를 확인하십시오.


예, 우리는 9.4가 이미 설치되었을 때 postgresql-9.5를 설치 했으므로 9.5는 기본 포트로 5433을 선택했습니다
vikingsteve

나는 5432 & 5433을 오랫동안 사용해 왔지만 5436을 보았지만 다른 OS에 창의력이나 기본값이 있는지는 알 수 없습니다.
Deil

3

나는이 문제에 부딪 쳤고, 동시에 두 개의 postgres 서버가 실행되고있었습니다. 나는 그중 하나를 제거하고 포트를 5432로 다시 변경하고 정상적으로 작동합니다.


2

나를 위해에 PgAdmin 4맥 OS 높은 시에라 딸깍, PostrgreSQL10의 에서 데이터베이스 서버를 왼쪽 열에서 다음 속성 탭을 보여 5433을 아래에있는 포트로 연결 . (설치 중에 5432를 선택했기 때문에 이유를 모르겠습니다). 어쨌든 Properties 탭 에서 Edit 아이콘을 클릭하고 5432로 변경하고 저장하면 문제가 해결되었습니다. 그림을 이동.


이 모든 것은 5432에서 이미 실행중인 서버에 연결할 수있게하므로 그렇게 한 후에 연결할 수 있습니다. 올바르게 언급 한대로 서버가 설치 당 5432에서 실행 중이었습니다.
Shane
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.