PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Script Bash para instalar o PostgreSQL - Não funciona


A parte que está claramente errada em seu script é que ele espera as linhas que seguem o su - postgres para ser executado como o usuário postgres. Isso não vai acontecer.

No modo de lote, su - postgres inicia e sai imediatamente porque nenhum comando é alimentado a ele. Em seguida, os próximos comandos dos scripts são executados conforme o usuário inicia o script (presumivelmente root) e falham.

Em vez disso, você deve escrever algo assim:
su - postgres <<-'EOF'
  /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
  /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
  /usr/local/pgsql/bin/createdb test
EOF
# the lines after the EOF will be executed again as the initial user

As sugestões nos comentários pressupõem que você instalou o postgresql por meio de um pacote, mas esse não é o contexto da pergunta. Quando você instala a partir da fonte com ./configure sem argumentos e make install , ele nunca instalará nada fora de /usr/local/pgsql . É perfeitamente normal não ter script de inicialização em /etc nesse contexto.