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.