Não é possível conectar-se a postgres instalados no Ubuntu

1

Eu instalei a pilha Bitnami Django que incluía o PostgreSQL 8.4.

Quando executo psql -U postgres , recebo o seguinte erro:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

O PG definitivamente está rodando e o arquivo pg_hba.conf tem esta aparência:

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

O que dá?

"Prova" em que a página está em execução:

root@assaf-desktop:/home/assaf# ps axf | grep postgres
14338 ?        S      0:00 /opt/djangostack-1.3-0/postgresql/bin/postgres -D /opt/djangostack-1.3-0/postgresql/data -p 5432
14347 ?        Ss     0:00  \_ postgres: writer process                                                                        
14348 ?        Ss     0:00  \_ postgres: wal writer process                                                                    
14349 ?        Ss     0:00  \_ postgres: autovacuum launcher process                                                           
14350 ?        Ss     0:00  \_ postgres: stats collector process                                                               
15139 pts/1    S+     0:00              \_ grep --color=auto postgres
root@assaf-desktop:/home/assaf# netstat -nltp | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      14338/postgres  
tcp6       0      0 ::1:5432                :::*                    LISTEN      14338/postgres  
root@assaf-desktop:/home/assaf# 
    
por Assaf Lavie 26.06.2011 / 14:28

3 respostas

3

Eu uso a seguinte solução alternativa para que os dois clientes fiquem felizes:

sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
    
por 15.11.2011 / 15:25
2

Suponhamos que você esteja usando a versão do sistema do comando psql , que procurará os soquetes de domínio postgres unix em /var/run/postgresql e os postgres de terceiros que você está usando foram configurados para colocá-los em outro lugar.

A solução mais fácil é provavelmente usar /opt/djangostack-1.3-0/postgresql/bin/psql , supondo que exista um, já que ele provavelmente irá procurar no lugar correto para os soquetes unix.

Caso contrário, você precisa observar a configuração unix_socket_directory em postgresql.conf , mas é bem provável que ela seja comentada e esteja usando um padrão compilado.

    
por 26.06.2011 / 16:42
0

A mensagem de erro refere-se a um soquete do domínio Unix, portanto, você precisa ajustar sua invocação de netstat para não excluí-las. Então tente sem a opção -t :

netstat -nlp | grep 5432

Eu acho que o servidor está realmente ouvindo no soquete /tmp/.s.PGSQL.5432 em vez do /var/run/postgresql/.s.PGSQL.5432 que o seu cliente está tentando conectar. Este é um problema típico ao usar pacotes PostgreSQL compilados manualmente ou de terceiros no Debian ou Ubuntu, porque o padrão de origem para o diretório de soquete do domínio Unix é /tmp , mas o pacote Debian o altera para /var/run/postgresql .

Soluções possíveis:

  • Use os clientes fornecidos pelo pacote de terceiros (chamada /opt/djangostack-1.3-0/postgresql/bin/psql ). Possivelmente, desinstale completamente os pacotes fornecidos pelo Ubuntu (pode ser difícil por causa de outras dependências reversas).
  • Corrija o diretório de soquete do pacote de terceiros para ser compatível com o Debian / Ubuntu.
  • Use -h localhost para se conectar via TCP / IP.
  • Use a configuração -h /tmp ou equivalente PGHOST para apontar para o diretório correto.
  • Não use pacotes de terceiros.
por 27.06.2011 / 19:39