Correção: psql: não foi possível conectar ao servidor: esse arquivo ou diretório não existe

PostgreSQL se promove como a plataforma de aplicativo de banco de dados de código aberto mais avançada, e o Debian Linux certamente possui muitos pacotes que o tornam ainda mais complexo. Você também pode encontrar muitos pacotes para PostgreSQL se estiver trabalhando com o Ubuntu Server ou qualquer um dos vários giros do Ubuntu, uma vez que são baseados no núcleo do Debian. Este nível de complexidade e desenvolvimento torna os avisos “não foi possível conectar ao servidor” e “nenhum arquivo ou diretório” muito mais irritantes.

Felizmente, esses são normalmente casos simples de problemas de permissão causados ​​pelo fato de que o PostgreSQL deseja que um usuário chamado postgres mantenha esses diretórios. Usando um truque de linha de comando simples, você pode corrigir isso quase que instantaneamente. Você vai querer passar por algumas verificações básicas de diagnóstico antes, apenas para ter certeza de que este é realmente o problema que você está enfrentando.

Corrigindo o PostgreSQL não foi possível conectar aos erros do servidor

Primeiro, tente reiniciar o sistema PostgreSQL manualmente. Às vezes, isso é o suficiente para consertar as coisas e, caso contrário, você receberá pelo menos uma mensagem de erro para trabalhar. Muito provavelmente, você simplesmente reiniciará o sistema emitindo o comando psql como o usuário postgres.

Você pode descobrir que isso esclareceu tudo. Caso contrário, você pode obter uma linha que diz “psql: não foi possível conectar ao servidor: arquivo ou diretório inexistente”, o que significa que você está tendo problemas de permissão. Se você receber essa mensagem de erro, também receberá algum outro texto cuspido.

Verifique o status do serviço se você recebeu esta mensagem para certificar-se de que os módulos estão carregados. Deveriam ser, mas se não forem, você pode reiniciar. Se você receber uma mensagem que diz “Carregado: carregado (/lib/systemd/system/postgresql.service; ativado)”, então eles estão em execução. Tente sudo service postgresql restart apenas para fazer uma breve reinicialização e ver se isso corrige algo. Normalmente não funciona, mas pode valer a pena tentar, dependendo.

Supondo que não tenha ajudado, dê uma olhada dentro do log do PostgreSQL para procurar erros. No caso improvável de você encontrar algo sobre erros de pacote, pode estar faltando um dos módulos SQL. Normalmente, essa não é a causa desses problemas, mas certamente não custa pelo menos dar uma olhada. Mais do que provável, você realmente encontrará algo que o avisa que “as permissões devem ser u = rwx (0700)” e

esse “diretório de dados“ /var/lib/postgresql/9.6/main ”tem acesso de grupo ou mundial”, embora você possa ver um número de versão diferente dependendo de qual servidor SQL está executando.

Isso ocorre porque o Debian e distribuições semelhantes esperam que o usuário postgres e o grupo controlem esses diretórios com permissões 0700 e todos os arquivos por meio de permissões 0600 para fins de segurança. Tudo que você precisa fazer é executar o seguinte comando no terminal para corrigir as permissões:

sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/

Lembre-se de que deve ser um X maiúsculo e não o x minúsculo mais comum com o qual você provavelmente está mais familiarizado, devido à maneira específica com que deseja definir essas opções de permissão de arquivo. Embora você precise de acesso root para fazer isso, a inclusão dessas duas marcas de sudo deve ser mais do que suficiente para dar a você as permissões adequadas ao executar como um usuário regular. Isso é importante, já que o Ubuntu e as várias implementações do Linux derivadas do Ubuntu hash da conta root principal, portanto, você precisa fazer as coisas desta forma.

Assim que este comando terminar, você pode reiniciar o serviço novamente por sudo service postgresql restart a partir do terminal e você não deve ter nenhum erro neste momento. Se você desse uma olhada no log, então esses avisos sobre problemas de permissões também não deveriam estar mais lá.

Este é um erro que ocorre como resultado de condições bastante específicas, então você não deve experimentá-lo novamente depois de corrigi-lo pela primeira vez, desde que você não tente fazer nada manualmente envolvendo a manipulação de permissões dos diretórios do PostgreSQL. Não há nenhuma situação em que isso seja realmente necessário, a não ser corrigir esse problema em primeiro lugar.