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