O PostgreSQL não está sendo executado no Mac

55

O erro na íntegra diz:

psql: não foi possível conectar ao servidor: Esse arquivo ou diretório não existe. O servidor está executando localmente e aceitando conexões no soquete de domínio Unix "/tmp/.s.PGSQL.5432"?

Esta é a segunda vez que eu configuro o Postgresql via Homebrew no meu Mac, e não tenho idéia do que está acontecendo. Anteriormente, estava funcionando. Em algum momento, devo ter digitado um comando que estragou tudo. Não tenho certeza. Agora, sempre que insiro um comando SQL na linha de comando, recebo a mensagem acima. Eu executei um comando para verificar se o servidor está em execução, e aparentemente não está. Se eu tentar iniciar o servidor usando

$ postgres -D / usr / local / pgsql / data

Eu recebo o seguinte erro:

O postgres não pode acessar o arquivo de configuração do servidor "/usr/local/pgsql/data/postgresql.conf": esse arquivo ou diretório não existe

Eu desinstalei e reinstalei o Postgresql via Homebrew, mas o problema persiste. Estou completamente sem saber como fazê-lo funcionar. Qualquer ajuda seria apreciada.

Michael P.
fonte

Respostas:

52

O problema também pode ser atribuído a um processo com falha que deixou o postmaster.pidarquivo para trás.

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql
demisx
fonte
4
No MacOSX, esta resposta me salvou. Tive o mesmo erro que o OP depois que meu computador foi reiniciado. O brew servicescomando não foi útil porque fez parecer que tudo estava funcionando. Remover o postmaster.pidé o que finalmente fez tudo funcionar novamente. Obrigado!
vinhboy
11
Isso aconteceu comigo também. A queda violenta do Mac OS X causou um reinício, depois que o Postgres não apareceu. Os serviços brew / start / stop / restart não funcionam, você deve remover manualmente o arquivo pid.
Matthijs
A maneira recomendada seria executar o Postgres em um contêiner de encaixe, é claro. Muito fácil de iniciar e tudo é limpo quando um contêiner é fechado. Eu diria que a execução de qualquer aplicativo de terceiros em um contêiner de docker deve ser de fato hoje em dia.
demisx
43

A resposta está aqui .

Execute este comando para iniciar manualmente o servidor:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Michael P.
fonte
14

Eu estava recebendo o mesmo

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

loop de Homebrew instalar / iniciar / parar / reiniciar sem sucesso ...

Finalmente, brew postgresql-upgrade-databasefuncionou.

Parece que eu estava no 9.6 em vez do 10.4, e algo que minha última reinicialização da App Store reiniciou todos os meus servidores de banco de dados ...

senbenito
fonte
isso funcionou para mim
davideghz 04/03
Era isso brew postgresql-upgrade-databaseque eu estava perdendo. Obrigado por apontar isso.
Corin
Trabalhou para mim obrigado!
Erwin Rooijakkers
Eu tentei todas as soluções. Mas este é o único que funcionou para mim. Seria ótimo saber se alguém poderia explicar por que isso foi corrigido completamente.
JohnnyQ
11

Acabei de resolver o mesmo problema. É só porque eu esqueci de executá-lo corretamente antes de usar.

Para uma instalação pura postgresql no Mac OS, o processo será (usando o comando brew ):

brew install postgresql

se você deseja executar automaticamente postgresqlno login:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

ou você só quer executá-lo quando quiser:

postgres -D /usr/local/var/postgres

Se o seu caso for mais complicado, vamos brew uninstall postgresqlrefazer essas etapas.

Espero que ajude!

Hoang Le
fonte
11
Atualização: para o postgres instalado pelo Homebrew, brew services start postgresqlagora é a maneira preferida de iniciar o postgres no login
henry
5
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket"/var/pgsql_socket/.s.PGSQL.5432"?

Continuei recebendo o erro acima e nenhuma das soluções acima funcionou para mim. Finalmente, a seguinte solução resolveu meu problema no Mac OS X

Instale o postgres usando o brew

brew install postgres

Instalar serviços de fermentação

brew tap homebrew/services

Para iniciar o postgres como um serviço em segundo plano

brew services start postgresql

Para parar o postgres manualmente

brew services stop postgresql

Também podemos usar os serviços de fermentação para reiniciar o Postgres

brew services restart postgresql
Sudharshan
fonte
2

Isso acontece quando o servidor postgres não está em execução. Etapas para instalar corretamente o Postgres via Homebrew no MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Isso inicializa o postgres para usar o diretório especificado como o diretório do banco de dados. Normalmente, não é aconselhável usar o diretório do usuário para armazenamento de banco de dados. Edite o arquivo sudoers para adicionar initdb e comandos similares e execute o initdb em / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Após obter sucesso com a etapa 2, ele solicitará a execução da etapa 3. Este comando inicia manualmente o servidor.]

Souvik Das
fonte
2

Funcionou para mim. Mude seu diretório postgresql de acordo com a versão em seu sistema.

Caminho comum rm /usr/local/var/postgres/postmaster.pid

mas para [email protected] no caminho do meu sistema é rm /usr/local/var/[email protected]/postmaster.pid

reinicie o [email protected] brew services restart [email protected]

rahulworld
fonte
Sim, esse é o único que funciona!
PirateApp
1

Apenas descomente em /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

e reinicie o postgres. E para mim funciona.

Roxana
fonte
1

Recentemente, passei por um problema semelhante. há apenas outro problema e solução. Eu estava executando a versão 2 do postgres (9.3 e 9.6), embora o servidor tenha sido configurado para ser executado em 2 portas diferentes, mas de alguma forma como o comando psql no bash tenta se conectar à porta 5432 padrão. Verifique se o servidor está em execução e verifique configurações da porta e execute psql -p <port> postgres. A solução está mudando de porta.

chuva
fonte
1

Eu estava procurando por um longo tempo, e esta foi a solução mais limpa e arrumada:

Recentemente, atualizei o Postgres de 9.2 para 9.3 usando o postgres de atualização de distribuição. O processo foi tranquilo e o pg_upgrade é uma ferramenta muito útil.

No entanto, ocorreu um problema quando tentei executar as especificações necessárias para conectar-se ao Postgres. Embora o Postgres estivesse definitivamente funcionando, de repente eu estava conseguindo:

não foi possível conectar ao servidor: Esse arquivo ou diretório não existe (PG :: ConnectionBad) O servidor está executando localmente e aceitando conexões no soquete de domínio Unix "/var/pgsql_socket/.s.PGSQL.5432"? O problema era que a nova versão do Postgres escutava em /tmp/.s.PGSQL.5432. Eu poderia ter mexido com a configuração e feito o Postgres usar o soquete de domínio que era anteriormente, ou dito ao Rails explicitamente como se conectar, mas ambas as abordagens pareciam um trabalho que eu não deveria ter que fazer. Em nenhum momento eu disse ao Rails para conectar-se ao postgres nesse caminho, o Rails assumiu e agora suas suposições estavam erradas.

A correção é simples, embora um pouco surpreendente. Quando você instala a gema 'pg', ela detecta qual versão do Postgres está instalada e define o caminho do soquete do domínio adequadamente. A solução é tão simples quanto reinstalar a gema. $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/

jalebaro
fonte
11
Por favor edite sua resposta para que ele fornece valor se o link para de funcionar . Você pode encontrar orientações sobre como fazer isso corretamente em Como fazer referência a material escrito por outras pessoas . Obrigado.
Paul White
0

atualize-o usando o comando

  brew postgresql-upgrade-database

se você tiver o seguinte erro O comando 'brew' não foi encontrado, mas pode ser instalado com: sudo apt install linuxbrew-wrapper

instale-o usando o comando

 sudo apt install linuxbrew-wrapper
Nadeem Qasmi
fonte
0

Para mim, isso também aconteceu após uma reinicialização e nenhuma das soluções acima funcionou para mim. Depois de verificar o log do servidor como este:

tail /usr/local/var/postgres/server.log

Percebi:

    2019-11-06 11:04:31.797 CET [85029] FATAL:  data directory "/usr/local/var/postgres" has invalid permissions
2019-11-06 11:04:31.797 CET [85029] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

Então eu mudei as permissões assim:

sudo chmod 700  /usr/local/var/postgres

e tudo funcionou novamente e a vida era boa.

Gijsthebookie
fonte
-3

As etapas abaixo me ajudam a:

brew desinstalar o postgresql brew instalar o postgresql brew o postgresql-upgrade-database

BMA88
fonte