O PostgreSQL 10 não inicia no Ubuntu 18.04

1

No meu novo Ubuntu 18.04 -

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:    18.04
Codename:   bionic

PostgreSQL instalado 10 -

$ apt list --installed | grep -i postgres
postgresql-client-10/bionic,now 10.3-1 amd64 [installed]
postgresql-client-common/bionic,bionic,now 190 all [installed,automatic]
postgresql-common/bionic,bionic,now 190 all [installed,automatic]
postgresql-server-dev-10/bionic,now 10.3-1 amd64 [installed]
postgresql-server-dev-all/bionic,bionic,now 190 all [installed]

Tanto service como systemctl retornam imediatamente sem nenhuma mensagem, mas não iniciaram nenhum processo postgres -

$ sudo service postgresql restart
$ sudo systemctl restart postgresql

Estou completamente no escuro, pois não há conf nem log -

$ ll /etc/postgresql
total 8
drwxr-xr-x  2 root root 4096 Feb  8 12:26 ./
drwxr-xr-x 95 root root 4096 May  6 04:11 ../

$ ll /var/log/postgresql/
total 8
drwxrwxr-t  2 root postgres 4096 Feb  8 12:26 ./
drwxrwxr-x 10 root syslog   4096 May  6 04:10 ../

O que está acontecendo lá? Qualquer ponteiro será muito apreciado.

Editar: para piorar as coisas, o PostgreSQL 10 é o único pacote listado no Ubuntu 18.04, não há nenhuma maneira "correta" de instalar uma versão mais antiga do PostgreSQL

    
por Jerry Ji 06.05.2018 / 08:27

5 respostas

3

Do resultado de apt list --installed você não tem um servidor PostgreSQL 10 realmente instalado.

O nome do pacote é exatamente postgresql-10 : link . Você deve instalar esse pacote.

A falta de erro de systemctl e o fato de existir um serviço postgresql é confuso: é porque postgresql é um serviço "guarda-chuva" que ativa cada instância postgresql instalada e configurada. No seu caso, você atualmente tem zero tal instância, mas tudo bem com relação ao serviço postgresql . No caso mais geral, você pode ter várias versões diferentes do PostgreSQL em execução simultaneamente (de diferentes pacotes postgresql-<version> ) e várias instâncias da mesma versão também (do mesmo pacote).

Sugiro verificar suas instâncias do PostgreSQL com pg_lsclusters em vez de systemctl . Veja também pg_ctlcluster para controlá-los.

    
por 11.05.2018 / 14:49
1

05/13/2018

AVISO LEGAL: Isto é para postgresql 10 e ubuntu 18.04 , e pode ou não funcionar para outras versões. PS: Se você tem adulterado as configurações de idioma ultimamente, por favor me avise, porque pode haver uma conexão com a falha do postgres

Ontem eu estava tendo exatamente o mesmo problema, e ninguém em toda a internet poderia me ajudar, então eu fui desonesto ... E funcionou!

Primeiramente, se você tiver algum banco de dados com dados que esteja interessado em manter, não posso ajudá-lo; você terá que descobrir uma maneira de fazer backup de todos os seus dados.

Agora, nas etapas reais (isso é exatamente o que eu fiz, as etapas entre [ ] que você pode pular ):

sudo apt remove --purge postgres*
[ sudo apt remove --purge pg* ]
sudo apt autoremove
sudo apt autoclean
sudo apt clean
[ sudo find / -name "*postgres*" -type f -delete ] -> this may delete any backups

Agora, certifique-se de ter essa linha em /etc/apt/sources.list

deb http://cz.archive.ubuntu.com/ubuntu bionic main

Se você não fizer isso, basta adicioná-lo ... Vamos continuar:

sudo apt update
sudo apt upgrade
sudo apt install -y postgresql-10 postgresql-contrib postgresql-client
[ sudo apt install -y postgresql-server pgadmin3 ] -> this you may need for metasploit
[ sudo reboot ]

Agora, você precisa verificar se os diretórios necessários foram criados:% /etc/postgresql/10/main - > arquivos de configuração em /usr/lib/postgresql/10/bin - > scripts & executáveis
/var/run/postgresql - > arquivos temporários em /var/lib/postgresql/10/main - > pastas

Se algum deles não existir, eu não posso te ajudar. Você também precisa ter certeza de que o usuário postgres exists Permite continuar:

sudo chown root /usr/lib/postgresql -R
sudo chgrp root /usr/lib/postgresql -R
sudo chmod 755 /usr/lib/postgresql -R

Agora, edite /etc/environment e adicione isso ao PATH: /usr/lib/postgresql/10/bin

sudo chown postgres /etc/postgresql -R
sudo chgrp postgres /etc/postgresql -R
sudo chmod 700 /etc/postgresql -R

sudo echo "" > /etc/postgresql/10/main/postgresql.log
sudo chown postgresql /etc/postgresql/10/main/postgresql.log
sudo chgrp postgresql /etc/postgresql/10/main/postgresql.log
sudo chmod 700 /etc/postgresql/10/main/postgresql.log

sudo mkdir /var/run/postgresql/10-main.pg_stat_tmp
sudo chown postgres /var/run/postgresql/10-main.pg_stat_tmp -R
sudo chgrp postgres /var/run/postgresql/10-main.pg_stat_tmp -R
sudo chmod 700 /var/run/postgresql/10-main.pg_stat_tmp -R

Crie /var/lib/postgresql/.bashrc e escreva isso para ele

shopt -s histappend
HISTSIZE=1000
HISTFILESIZE=2000
shopt -s checkwinsize
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    color_prompt=yes
    else
    color_prompt=
    fi
fi 
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
source /etc/environment

E então:

sudo chown postgresql /var/lib/postgresql/.bashrc
sudo chgrp postgresql /var/lib/postgresql/.bashrc
sudo chmod 664 /var/lib/postgresql/.bashrc
[ sudo reboot ]

E agora para a parte final:

sudo su
su postgresql

Para iniciar o postgresql:

pg_ctl start -D /etc/postgresql/10/main -l /etc/postgresql/10/main/postgresql.log

Para finalizar:

kill $(cat /var/run/postgresql/10-main.pid)

Configuração básica (insira o postgresql intérprete):

psql

\du+ - > listar usuários postgresql em \l - > listar bancos de dados postgresql em createuser e dropuser - > auto explicativo de createdb e dropdb - > auto explicativo

EXTRA: METASPLOIT

Se alguém lendo isso precisar de postgresql para metasploit, você pode seguir este link (é para 16.04 mas funciona bem em 18.04) , no entanto, há um erro: Em algum momento, você precisará executar isto:
rvm --default use ruby-${RUBY_VERSION}@metasploit-framework gem pristine --all Em vez do sugerido:
rvm --default use ruby-${RUByVERSION}@metasploit-framework

Além disso, se você tiver problemas com a parte do pacote Ruby , este comando pode salvar sua vida: gem pristine --all

    
por 14.05.2018 / 01:26
0

Tive o mesmo problema aqui. Removeu tudo postgres relacionado (apt remove --purge), apagou todos os diretórios restantes do postgres 9 e reinstalou o postgres 10 novamente. Em seguida, os arquivos de configuração em / etc / postgresql / apareceu e banco de dados pode ser iniciado. HTH.

    
por 07.05.2018 / 09:56
0

AVISO LEGAL: É para postgresql 10 e ubuntu 18.04, e pode ou não funcionar para outras versões.

Siga a resposta fornecida por Mr Robot , exceto reconhecer:

  • O usuário e o grupo são postgres , portanto, os comandos devem usar chown -R postgres:postgres ...
  • Não sei o que está acontecendo com /lib/systemd/system/postgresql.service , embora de alguma forma /lib/systemd/system/[email protected] gerencie um cluster do PostgreSQL? De qualquer forma, eu acho que já estava em execução no momento em que segui as instruções, e após a reinicialização (que deve ser desnecessária?) Voltou a ficar online, então acho que funciona.
por 09.06.2018 / 08:57
0

Apenas use

service postgresql@10-main start

e funciona. Não sei exatamente por que isso acontece em 18.04 apenas (eu verifiquei 17.10 e isso não acontece lá), mas o 'guarda-chuva' parece incapaz de enumerar as instâncias instaladas.

HTH

    
por 12.06.2018 / 11:19