Não é possível conectar-se ao Postgres no Vagrant Box - Conexão recusada?

10

Primeiro, sou novo no Vagrant e no Postgres.

Eu criei minha instância do Vagrant usando o link sem nenhum problema. Eu posso executar vagrant up e vagrant ssh sem problemas.

Eu segui as instruções com uma pequena alteração, instalei o " postgresql-8.4-postgis "pacote em vez de" postgresql postgresql-contrib ".

Eu iniciei o servidor usando:

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

Quando conectado à instância do vagrant, posso usar psql para conectar-me à instância sem problemas.

No meu Vagrantfile eu já tinha adicionado:

config.vm.forward_port 5432, 5432

mas quando eu tento rodar o psql do host local eu recebo:

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

Tenho certeza de que estou sentindo falta de algo simples. Alguma idéia?

Atualização:

Encontrei uma referência a um problema como este e o artigo sugeriu o uso de:

psql -U postgres -h localhost

com isso eu recebo:

psql: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
    
por Greg 27.03.2012 / 02:56

2 respostas

5

As instruções do post do blog que você mencionou não são corretas para o ubuntu: elas usam partes da instalação de um servidor auto-compilado que não combina bem com uma versão empacotada.

Não se deve criar / usr / local / pgsql / data e executar o initdb nesse diretório, porque o pacote do ubuntu usa /var/lib/postgresql/<pg-version-number>/<cluster-name> e executa initdb em nome do usuário.

O erro que menciona "/tmp/.s.PGSQL.5432" mostra que a localização esperada para este arquivo está incorreta (para o Ubuntu). Deve estar em /var/run/postgresql . Isto é provavelmente devido a executar o initdb manualmente com parâmetros que são incompatíveis com o Ubuntu.

Os arquivos postgresql.conf e pg_hba.conf a serem editados para permitir conexões não locais devem estar dentro de /etc/postgresql/8.4/main e não em / usr / local / pgsql / data.

O /etc/init.d/postgresql-8.4 deve ser lançado pela raiz (como tudo o mais em /etc/init.d), não pelo usuário postgres.

O PGDATA não deve ser configurado manualmente, porque novamente ele fica no caminho de como os pacotes postgres do ubuntu funcionam.

Minha resposta seria limpar e reinstalar o pacote postgresql-8.4 sem seguir nenhuma das instruções da postagem do blog. O postgresql-8.4-postgis depende do postgresql-8.4, então ele também será removido. Certifique-se também de desfazer a configuração de PGDATA em /etc/bash.bashrc.

    
por 27.03.2012 / 13:19
2

Você pode encontrar o meu livro de receitas útil. Acabei de postar no github. Ele configura o Ubuntu 12.04 LTS com o PostgreSQL 9.1.

    
por 29.08.2012 / 02:51