PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Bash Script pour installer PostgreSQL - Ne fonctionne pas

La partie qui est clairement fausse dans votre script est qu'il attend les lignes suivant le su - postgres à exécuter en tant qu'utilisateur postgres. Cela n'arrivera pas.

En mode batch, su - postgres démarre et se termine immédiatement car aucune commande ne lui est transmise. Ensuite, les commandes suivantes des scripts sont exécutées en tant qu'utilisateur lançant le script (vraisemblablement root) et elles échouent.

Au lieu de cela, vous devriez écrire quelque chose comme ceci :

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

Les suggestions dans les commentaires supposent que vous avez installé postgresql via un package, mais ce n'est pas le contexte de la question. Lorsque vous installez depuis la source avec ./configure sans arguments et make install , il n'installera jamais rien en dehors de /usr/local/pgsql . Il est parfaitement normal de ne pas avoir de script de démarrage sous /etc dans ce contexte.