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 está definitivamente em execução e o pg_hba.conf
arquivo fica assim:
# 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 da?
"Prova" de que a página está sendo executada:
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#
postgresql
Assaf Lavie
fonte
fonte
Respostas:
Esse problema ocorre com a instalação do
postgres
pacote sem um número de versão. Emborapostgres
esteja instalado e seja a versão correta, o script para configurar o cluster não será executado corretamente; é uma questão de embalagem.Se você se sentir confortável com
postgres
um script, poderá executar para criar este cluster e continuarpostgres
executando. No entanto, há uma maneira mais fácil.Primeiro limpe a instalação antiga do postgres. Atualmente, o problema está na versão 9.1, portanto, assumirei que é isso que você instalou
Agora basta reinstalar
Anote o nome do pacote com o número da versão. HTH.
fonte
A mensagem de erro refere-se a um soquete de domínio Unix, portanto, você precisa ajustar sua
netstat
chamada para não excluí-los. Portanto, tente sem a opção-t
:Eu acho que o servidor está realmente ouvindo no soquete
/tmp/.s.PGSQL.5432
e não no/var/run/postgresql/.s.PGSQL.5432
que seu cliente está tentando se conectar. Este é um problema típico ao usar pacotes PostgreSQL compilados 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:
/opt/djangostack-1.3-0/postgresql/bin/psql
). Possivelmente desinstalar completamente os pacotes fornecidos pelo Ubuntu (pode ser difícil por causa de outras dependências reversas).-H localhost
para conectar via TCP / IP.-h /tmp
ouPGHOST
configuração equivalente para apontar para o diretório certo.fonte
Isso funciona para mim:
Edit: postgresql.conf
Ative ou adicione:
Reinicie o mecanismo do banco de dados:
Além disso, você pode verificar o arquivo
pg_hba.conf
E adicione seu endereço de rede ou host:
fonte
Você pode usar
psql -U postgres -h localhost
para forçar a conexão por TCP em vez de soquetes de domínio UNIX; suanetstat
saída mostra que o servidor PostgreSQL está escutando na porta 5432 do host local.Você pode descobrir qual soquete UNIX local é usado pelo servidor PostgrSQL usando uma invocação diferente do netstat :
De qualquer forma, as interfaces nas quais o servidor PostgreSQL escuta são configuradas
postgresql.conf
.fonte
Basta criar um softlink como este:
fonte
Eu faço funcionar fazendo o seguinte:
Escolha seus locais preferidos e execute
(9.5 é a minha versão do postgresql)
e então funciona!
fonte
service postgresql restart
mas ele diz que não tinha nenhum cluster do postgresql. Então eu encontrar o dessa maneira para me ajudar :)dpkg-reconfigure locales
é muito importante.Eu tive que compilar o PostgreSQL 8.1 no Debian Squeeze porque estou usando o Project Open, que é baseado no OpenACS e não será executado nas versões mais recentes do PostgreSQL.
A configuração de compilação padrão coloca o
unix_socket
in/tmp
, mas o Project Open, que depende do PostgreSQL, não funcionaria porque procura pelounix_socket
at/var/run/postgresql
.Há uma configuração
postgresql.conf
para definir a localização do soquete. Meu problema era que eu poderia definir/tmp
epsql
trabalhar, mas não o projeto aberto, ou poderia defini-lo/var/run/postgresql
epsql
não funcionaria, mas o projeto aberto funcionou.Uma solução para o problema é definir o soquete
/var/run/postgresql
e depois executarpsql
, com base na sugestão de Peter, como:Isso é executado localmente usando permissões locais. A única desvantagem é que ele é mais digitado do que simplesmente "psql".
A outra sugestão que alguém fez foi criar um vínculo simbólico entre os dois locais. Isso também funcionou, mas o link desapareceu após a reinicialização. Talvez seja mais fácil usar apenas o argumento -h, no entanto, criei o link simbólico a partir do script PostgreSQL em
/etc/init.d
. Coloquei o comando de criação de link simbólico na seção "Iniciar". Obviamente, quando eu emitir um comando de parada e iniciar ou reiniciar, ele tentará recriar um link simbólico existente, mas, além da mensagem de aviso, provavelmente não haverá nenhum problema nisso.No meu caso, em vez de:
eu tenho
e definiu explicitamente o unix_socket como
/var/run/postgresql/.s.PGSQL.5432
inpostgresql.conf
.fonte
Solução:
Fazem isto
e isto. ( 9.3 é minha versão atual do PostgreSQL. Escreva sua versão!)
fonte
Se o seu serviço Postgres estiver funcionando sem nenhum erro ou não houver erro ao iniciar o serviço Postgres e você ainda estiver recebendo o erro mencionado, siga estas etapas
Etapa 1: A execução
pg_lsclusters
listará todos os clusters do postgres em execução no seu dispositivopor exemplo:
provavelmente o status estará baixo no seu caso e no serviço postgres
Etapa 2: reinicie o pg_ctlcluster
Etapa 3: a etapa 2 falhou e gerou um erro
Se este processo não for bem sucedido, ocorrerá um erro. Você pode ver o log de erro
/var/log/postgresql/postgresql-9.6-main.log
Meu erro foi:
Etapa 4: verificar a propriedade do postgres
Certifique-se de que
postgres
é o proprietário de/var/lib/postgresql/version_no/main
Caso contrário, execute
Etapa 5: verificar se o usuário do postgres pertence ao grupo de usuários ssl-cert
Acontece que eu removi erroneamente o usuário do Postgres do
ssl-cert
grupo. Execute o código abaixo para corrigir o problema do grupo de usuários e as permissõesfonte
No meu caso, foi causado por um erro de digitação que fiz durante a edição
/etc/postgresql/9.5/main/pg_hba.conf
Eu mudei:
para:
Mas
MD5
tinha que ser minúsculomd5
:fonte
trusted
, em vez detrust
, e não reiniciar o serviço, e só quebrou o dia seguinte, quando eu já esqueci o que mudouAchei que a desinstalação do Postgres parece pouco convincente. Isso ajuda a resolver meu problema:
Inicie o servidor postgres:
Verifique se o servidor inicia na inicialização:
Informações detalhadas podem ser encontradas no site DigitalOcean Aqui.
fonte
Falha ao resolver este problema com o meu servidor postgres-9.5. Após 3 dias de progresso zero, tentando todas as permutações de correção neste e em outros sites, decidi reinstalar o servidor e perder 5 dias de trabalho. Mas repliquei o problema na nova instância. Isso pode fornecer uma perspectiva de como corrigi-lo antes de você adotar a abordagem catastrófica que eu fiz.
Primeiro, desative todas as configurações de log no postgresql.conf. Esta é a seção:
Comente tudo nessa seção. Em seguida, reinicie o serviço.
Ao reiniciar, use
/etc/init.d/postgresql start
ourestart
achei útil estar no modo superusuário durante a reinicialização. Eu tinha uma janela x aberta apenas para essa operação. Você pode estabelecer esse modo de superusuário comsudo -i
.Verifique se o servidor pode ser alcançado com este comando simples:
psql -l -U postgres
Se isso não resolver, considere o seguinte:
Eu estava mudando a propriedade em várias pastas enquanto tentava encontrar uma solução. Eu sabia que provavelmente tentaria reverter essas propriedades de pasta
chmod
por mais dois dias. Se você já mexeu com essas propriedades de pasta e não deseja limpar completamente o servidor, comece a rastrear as configurações de todas as pastas afetadas para trazê-las de volta ao estado original. Você pode tentar fazer uma instalação paralela em outro sistema e verificar sistematicamente a propriedade e as configurações de todas as pastas. Tedioso, mas você pode obter acesso aos seus dados.Depois de obter acesso, altere sistematicamente cada linha relevante na
# ERROR REPORTING AND LOGGING
seção dopostgresql.conf
arquivo. Reinicie e teste. Descobri que a pasta padrão dos logs estava causando uma falha. Eu comentei especificamentelog_directory
. A pasta padrão em que o sistema coloca os logs é então/var/log/postgresql
.fonte
Possivelmente isso pode ter acontecido porque você alterou as permissões da
/var/lib/postgresql/9.3/main
pasta.Tente alterá-lo para 700 usando o comando abaixo:
fonte
Isso não está exatamente relacionado à pergunta desde que eu estou usando o Flask, mas esse foi o erro exato que eu estava recebendo e esse foi o segmento mais relevante para obter idéias.
Minha configuração: Windows Subsystem para Linux, Composição do Docker com makefile com arquivo docker, Flask, Postgresql (usando um esquema que consiste em tabelas)
Para conectar-se ao postgres, configure sua string de conexão da seguinte maneira:
NOTA: Eu nunca recebi nenhum IP (por exemplo, localhost, 127.0.0.1) para funcionar usando qualquer método neste segmento. A ideia de usar o nome do contêiner em vez do localhost veio daqui: https://github.com/docker-library/postgres/issues/297
Defina seu esquema:
Defina seu caminho de pesquisa para suas funções ao configurar sua sessão:
fonte
Eu tive exatamente o mesmo problema que Peter Eisentraut descreveu. Usando o
netstat -nlp | grep 5432
comando, pude ver o servidor ouvindo no soquete/tmp/.s.PGSQL.5432
.Para corrigir isso, basta editar seu
postgresql.conf
arquivo e alterar as seguintes linhas:Agora execute
service postgresql-9.4 restart
(Substitua 9-4 pela sua versão) e as conexões remotas devem estar funcionando agora.Agora, para permitir conexões locais, basta criar um link simbólico para o
/var/run/postgresql
diretório.Não se esqueça de verificar se o seu também
pg_hba.conf
está configurado corretamente.fonte
No meu caso, tudo o que eu precisava fazer era o seguinte:
e depois
Isso funcionou muito bem. Espero que ajude. Felicidades :) .
fonte
Encontre seu arquivo:
Resultado:
Faça o login como usuário do postgres:
fonte
Eu tive o mesmo problema (no Ubuntu 15.10 (ardiloso)).
sudo find / -name 'pg_hba.conf' -print
ousudo find / -name 'postgresql.conf' -print
apareceu vazio. Antes disso, parecia que várias instâncias do postgresql foram instaladas.Você pode ter similar quando vê como instalado ou problemas de dependência listados
e assim por diante.
Nesse caso, você deve
sudo apt-get autoremove
cada pacote 1 por 1.Depois disso, siga as instruções e você ficará bem. Especialmente quando se trata de importar e adicionar chaves à lista de fontes PRIMEIRO
Se não estiver usando astuciosamente, substitua
wily
pela sua liberação, ou seja, pela saída delsb_release -cs
E então você deve estar bem e ser capaz de conectar e criar usuários.
Saída esperada:
Fonte das minhas soluções (créditos)
fonte
Enquanto estava com o mesmo problema, tentei algo diferente:
Iniciando o daemon postgresql manualmente, obtive:
Então o que eu fiz foi para definir um limite inferior para
shared_buffers
emax_connections
empostgresql.conf
erestart
o serviço.Isso resolveu o problema!
Aqui está o log de erros completo:
fonte
Após muitas tentativas exaustivas, encontrei a solução com base em outros posts!
fonte
Crie o diretório postgresql dentro de run e execute o seguinte comando.
fonte
Basta adicionar / tmp unix_socket_directories
postgresql.conf
fonte