Vagrant Box의 Postgres에 연결할 수 없습니다-연결이 거부 되었습니까?


10

먼저, 나는 Vagrant와 Postgres를 처음 사용합니다.

http://files.vagrantup.com/lucid32.box 를 사용하여 아무런 문제없이 Vagrant 인스턴스를 만들었습니다 . 나는 실행할 수 있어요 vagrant upvagrant ssh문제없이.

내가 다음에 지시 한 미성년자의 변경과를, 내가 대신 "PostgreSQL은 PostgreSQL을-있는 contrib"의 "PostgreSQL의-8.4-PostGIS와"패키지를 설치했습니다.

다음을 사용하여 서버를 시작했습니다.

postgres@lucid32:/home/vagrant$ /etc/init.d/postgresql-8.4 start

방랑 인스턴스에 연결된 동안 psql문제없이 인스턴스에 연결하는 데 사용할 수 있습니다 .

내 Vagrantfile에서 나는 이미 추가했다 :

config.vm.forward_port 5432, 5432

그러나 localhost에서 psql을 실행하려고하면 다음과 같은 결과가 나타납니다.

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

나는 간단한 것을 놓치고 있다고 확신합니다. 어떤 아이디어?

최신 정보:

나는 이와 같은 문제에 대한 언급을 찾았고 기사는 다음을 사용하여 제안했다.

psql -U postgres -h localhost

그것으로 나는 얻는다 :

psql: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

답변:


5

언급 한 블로그 게시물의 지침은 우분투에는 전혀 적합하지 않습니다. 패키지 버전과 잘 혼합되지 않은 자체 컴파일 서버 설치의 조각을 사용합니다.

우분투 패키지는 사용자를 대신하여 사용 /var/lib/postgresql/<pg-version-number>/<cluster-name>하고 실행 하기 때문에 / usr / local / pgsql / data를 작성하고 해당 디렉토리에서 initdb를 실행해서는 안됩니다 initdb.

"/tmp/.s.PGSQL.5432"를 언급하는 오류는이 파일의 예상 위치가 잘못되었음을 나타냅니다 (우분투의 경우). 에 있어야합니다 /var/run/postgresql. 우분투와 호환되지 않는 매개 변수를 사용하여 수동으로 initdb를 실행했기 때문일 수 있습니다.

로컬이 아닌 연결을 가능하게하도록 편집 할 postgresql.conf 및 pg_hba.conf 파일은 /etc/postgresql/8.4/main/ usr / local / pgsql / data가 아닌 내부에 있어야합니다 .

/etc/init.d/postgresql-8.4아니라 포스트 그레스의 사용자가, 루트 (/etc/init.d에있는 다른 모든 것들과 같은)을 출시한다.

PGDATA는 우분투 postgres 패키지의 작동 방식을 방해하기 때문에 수동으로 설정해서는 안됩니다.

내 대답은 블로그 게시물의 지침을 따르지 않고 postgresql-8.4 패키지를 제거하고 다시 설치하는 것입니다. postgresql-8.4-postgis는 postgresql-8.4에 의존하므로 제거됩니다. 또한 /etc/bash.bashrc에서 PGDATA 설정을 취소하십시오.


지금 설치를 다시 실행하고 있지만 귀하의 답변에서 경로가 잘못된 파일을 찾는 데 우분투 경로가 잘못되었다고 제안했습니다. 서버가 우분투 상자 인 동안 OSX에서 실행되는 클라이언트 때문일 수 있습니까?

그래서 나는 다시 설치하고 똑같은 오류가 발생했습니다. 조금 더 둘러보고 iptables에 포트가 열려 있지 않은 것을 발견했습니다. 여기에 지침을 따른 후 : cyberciti.biz/tips/howto-iptables-postgresql-open-port.html 연결할 수 있습니다.

재설치가 수정 프로그램의 일부인지 확실하게 알 수는 없지만 이것이 도움이되었습니다. 그래서 당신에게 승리를 드리겠습니다

클라이언트와 서버가 서로 다른 호스트에있는 경우 psql -h <server> [optional other arguments], <server>는 서버의 호스트 이름 또는 IP 주소 (로컬 호스트가 아님)입니다 (이 경우 우분투 상자). 문제는 당신이 이런 식으로 부르는 것처럼 보이지 않으므로 모든 명령이 서버에서 시작되었다고 가정합니다. 어쨌든 나는 연결이 설정되었을지라도 다시 설치하는 것이 제정신이라고 생각합니다.

내가 포트 포트 포워딩 설정을 한 이후로 psql -U postgres -h localhost

2

당신은 찾을 수 있습니다 내 요리 책이 유용합니다. 방금 github에 게시했습니다. PostgreSQL 9.1로 Ubuntu 12.04 LTS를 구성합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.