PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Bash-Skript zum Installieren von PostgreSQL - Funktioniert nicht

Der Teil, der in Ihrem Skript eindeutig falsch ist, ist, dass es die Zeilen erwartet, die auf su - postgres folgen als Postgres-Benutzer ausgeführt werden. Das wird nicht passieren.

Im Stapelmodus su - postgres startet und wird sofort beendet, da ihm kein Befehl zugeführt wird. Dann werden die nächsten Befehle des Skripts als der Benutzer ausgeführt, der das Skript startet (vermutlich root), und sie schlagen fehl.

Stattdessen sollten Sie so etwas schreiben:

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

Die Vorschläge in den Kommentaren gehen davon aus, dass Sie postgresql über ein Paket installiert haben, aber das ist nicht der Kontext der Frage. Wenn Sie von der Quelle mit ./configure installieren ohne Argumente und make install , wird es niemals etwas außerhalb von /usr/local/pgsql installieren . Es ist vollkommen normal, kein Startskript unter /etc zu haben in diesem Zusammenhang.