O Psql não pôde se conectar ao servidor: arquivo ou diretório inexistente, erro 5432?


114

Estou tentando executar psqlem minha máquina Vagrant, mas recebo este 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"?

Nota: Vagrant 1.9.2 Box: ubuntu / trusty64, https://atlas.hashicorp.com/ubuntu/boxes/trusty64

Comandos EDIT que usei para instalar e executar o postgres:

  • sudo apt-get update
  • sudo apt-get install postgresql
  • sudo su postgres
  • psql -d postgres -U postgres

1
Esta foi a resposta que funcionou para mim: askubuntu.com/a/824325/733901
Bruno Louvem Azeredo

Respostas:


156

Eu tive esse mesmo problema, relacionado à configuração do meu arquivo pg_hba.conf (localizado em /etc/postgresql/9.6/main). Observe que 9.6 é a versão do postgresql que estou usando.

O erro em si está relacionado a uma configuração incorreta do postgresql, que faz com que o servidor trave antes de iniciar.

Eu sugeriria seguir estas instruções:

  1. Certifique-se de que o serviço postgresql está em execução, usando sudo service postgresql start
  2. Execute pg_lsclustersdo seu terminal
  3. Verifique qual é o cluster que você está executando, a saída deve ser algo como:

    Versão - Diretório de dados do proprietário do status da porta do cluster

    9.6 ------- main - 5432 postgres online /var/lib/postgresql/9.6/main

    Desconsidere os sinais '---', pois eles estão sendo usados ​​apenas para alinhamento. As informações importantes são a versão e o cluster. Você também pode verificar se o servidor está funcionando ou não na coluna de status.

  4. Copie as informações da versão e do cluster e use da seguinte forma pg_ctlcluster <version> <cluster> start:, no meu caso, usando a versão 9.6 e o ​​cluster 'principal', seriapg_ctlcluster 9.6 main start
  5. Se algo estiver errado, o postgresql irá gerar um log, que pode ser acessado no /var/log/postgresql/postgresql-<version>-main.log, então no meu caso, o comando completo seria sudo nano /var/log/postgresql/postgresql-9.6-main.log.
  6. A saída deve mostrar qual é o erro.

    2017-07-13 16:53:04 BRT [32176-1] LOG: método de autenticação inválido "all"
    2017-07-13 16:53:04 BRT [32176-2] CONTEXTO: linha 90 do arquivo de configuração "/ etc /postgresql/9.5/main/pg_hba.conf "
    2017-07-13 16:53:04 BRT [32176-3] FATAL: não foi possível carregar pg_hba.conf

  7. Corrija os erros e reinicie o serviço postgresql por meio sudo service postgresql restarte deve ficar bem.

Eu pesquisei muito para encontrar isso, o crédito vai para este post .

Boa sorte!


1
Excelente guia. Cheio de explicações abrangentes!
Salathiel Genèse

37

Eu tive o mesmo problema, mas nenhuma das respostas aqui ajudou.

Como eu consertei (mac)

  • Tente iniciar o postgresql com pg_ctl -D /usr/local/var/postgres start
  • Procure a mensagem de erro que diz algo assim FATAL: could not open directory "pg_tblspc": No such file or directory.
  • Crie esse diretório ausente mkdir /usr/local/var/postgres/pg_tblspc
  • Repita a partir da etapa um até criar todos os diretórios ausentes
  • Quando terminar e tentar iniciar o postgresql novamente, ele poderá dizerFATAL: lock file "postmaster.pid" already exists
  • Excluir postmaster.pid :rm /usr/local/var/postgres/postmaster.pid
  • Comece o postgres com: pg_ctl -D /usr/local/var/postgres start
  • Feito ✨

13

Estou postando isso para qualquer pessoa que está se sentindo perdida e sem esperança como eu me sentia quando encontrei esta pergunta. Parece que às vezes, ao editar alguns arquivos de configuração relacionados ao psotgresql, é possível alterar acidentalmente as permissões do arquivo:

insira a descrição da imagem aqui

Observe como o pg_hba.conf pertence ao root e os usuários não podem nem mesmo lê-lo. Isso faz com que o postgres não consiga abrir este arquivo e, portanto, não consiga iniciar o servidor, gerando o erro visto na questão original.

Correndo

sudo chmod +r pg_hba.conf

Consegui tornar este arquivo mais uma vez acessível ao usuário do postgres e depois de executar

sudo service postgresql start

Conseguiu fazer o servidor funcionar novamente.


Sim, esse era o meu problema, e isso não foi apontado nos logs (ou se foi não entendi como é).
EAmez

Não exatamente o que aconteceu comigo, mas por algum motivo o NETWORK SERVICE perdeu privilégios de gravação para toda a estrutura de diretório. Esta resposta me apontou na direção certa, portanto, o voto positivo.
Brad Mathews

5

O /etc/postgresql/9.6/main/postgresql.confmostra essa porta sendo atribuída? Na minha instalação padrão do Xubuntu Linux, o meu mostrou port = 5433 por algum motivo, tanto quanto me lembro, mas eu comentei a linha naquele mesmo arquivo que dizia listen_addresses = 'localhost'e descomentei a linha listen_addresses = '*'. Então, talvez comece e verifique aí. Espero que ajude.


4

Use o comando:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

9
Isso não remove o banco de dados inteiro? Acho que uma palavra de advertência seria necessária.
d33tah

1
Obrigado @Tucker Watts e @Gaurav Verma. Resolvi meu problema tentando ambas as soluções e adicionando este comando pg_ctl -D /usr/local/var/postgres -l logfile start.
Niyongabo

4

Isso funciona para mim:

pg_ctl -D /usr/local/var/postgresql@9.6 stop;
brew services stop postgresql@9.6;
brew services start postgresql@9.6;

4

Essas duas etapas resolveram isso para mim no Mac:

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

EDITAR:

Caso você enfrente esse problema (relatado por @ luckyguy73): psql: FATAL: database "postgresql" does not exist

Você pode correr

brew postgresql-upgrade-database

para fixar isso.


obrigado cara, passei de um não consigo conectar para um fatal seguindo suas instruções: "psql: FATAL: banco de dados" postgresql "não existe"
luckyguy73

Huh estranho, isso sempre funciona para mim. Você conseguiu resolver isso?
nicodp

não se preocupe, na verdade acabou tudo bem. Acabei de executar 'brew postgresql-upgrade-database' e funcionou, obrigado
luckyguy73

1
Que bom que você consertou! Se você não se importa, acrescentarei isso à resposta, caso outra pessoa tenha o mesmo problema. Obrigado
nicodp

3

Dentro de zsh:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Esta é a única coisa que funcionou para mim após incontáveis ​​horas de resolução de problemas.


2

Abra seu gerenciador de banco de dados e execute este script

update pg_database set datallowconn = 'true' where datname = 'your_database_name';

2

A mesma coisa aconteceu comigo porque eu havia mudado algo no /etc/hostsarquivo. Depois de mudar de volta para 127.0.0.1 localhostele funcionou para mim.


2

apenas reinstale o seu pgsql com a versão direta sudo apt-get install postgresql-9.5 (você deve remover o pacote antes de instalar um novo)


2

Consegui resolver o problema executando:

sudo systemctl start postgresql@9.5-main

sudo systemctl start postgresql@12-mainfuncionou para mim
parsecer

2

No meu caso, foi o arquivo de bloqueio postmaster.idque não foi excluído corretamente durante a última falha do sistema que causou o problema. Excluí-lo sudo rm /usr/local/var/postgres/postmaster.pide reiniciar o Postgres resolveu o problema.


1

Eu tive o mesmo erro ao criar o banco de dados SQL em uma VM. Eu havia alterado o valor padrão de /etc/postgresql/9.3/main/postgresql.conf shared_buffers = 200MBpara 75% da minha RAM total. Bem, esqueci de realmente alocar essa RAM na VM. Quando dei o comando para fazer um novo banco de dados, recebi o mesmo erro.

Desliguei, dei ao bebê a mamadeira (RAM) e pronto, funcionou.


1

Recebi este erro quando restaurei meu banco de dados do último arquivo de backup pg_basebackup. Depois disso, quando tentei conectar o banco de dados (psql), recebi o mesmo erro. O erro foi resolvido quando atualizei o arquivo pg_hba.conf e onde quer que houvesse autenticação "peer", substituí-a por "md5" e reiniciei os serviços do postgres. Depois disso, o problema foi resolvido.



1

Este erro aconteceu comigo depois que meu mac mini foi desconectado (desligamento forçado) e tudo que eu tive que fazer para consertar foi reiniciar


1

Eu recomendo que você deve esclarecer a porta que postgres. No meu caso, eu não sabia em qual porta o postgres estava rodando.

lsof -i | grep 'post'

então você pode saber qual porta está escutando.

psql -U postgres -p "port_in_use"

com opção de porta, pode ser a resposta. você pode usar o psql.


1

Ocasionalmente, tenho o mesmo problema, mas principalmente após atualizações do macOS. Fechar e migrar para a nova versão geralmente corrige para mim (faça alterações de acordo com sua versão). Portanto, primeiro atualize seu postgresql

brew services stop postgresql@12
brew services start postgresql@12
brew postgresql-upgrade-database

Esta é principalmente uma correção temporária, mas como não consegui encontrar uma solução melhor, isso funciona para mim.


brew postgresql-upgrade-database é o que finalmente funcionou para mim depois que tentei de tudo
luckyguy73

1

Se nenhuma das respostas acima não funcionar para você, tente esta,

Muitas pessoas mencionaram muitas soluções para este problema! Mas todos eles se esqueceram disso, o mesmo problema surgirá quando o seu disco não tiver espaço suficiente ou o espaço atribuído a você estiver postgrescheio

Verifique se o armazenamento do sistema está cheio, libere espaço! então reinicie seu postgres sudo service postgresql restartou pare e comece sudo service posgresql stopentãosudo service postgresql start

Isso vai resolver o problema, resolveu para mim


0

Eu tenho o mesmo problema com o postgres 11 no meu mac. Eu sempre recebo este erro após reiniciar

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"?

Como uma correção temporária eu faço

brew services stop postgresql@11
brew services start postgresql@11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.