Postgres-Passwort mit Remote-SSH ändern

Postgres-Passwort mit Remote-SSH ändern

Ich betreibe eine Postgres-Datenbank auf einer Google Cloud-Instanz, die wir im Rahmen unseres nächtlichen Builds täglich löschen und neu erstellen. Derzeit erfolgt dies manuell und ich möchte es automatisieren.

gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "dropdb mydb"
gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "createdb mydb"
gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "psql postgres -c 'GRANT ALL PRIVILEGES ON DATABASE mydb to myuser;' "

Das Löschen und Neuerstellen der Datenbank funktioniert einwandfrei, das Problem tritt jedoch auf, wenn ich das Kennwort neu einrichten muss ...

gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "psql postgres -c 'ALTER USER myuser WITH PASSWORD 'passwordhere' ; "

gcloudDer Befehl verwendet bereits doppelte Anführungszeichen, psql postgres -cverwendet bereits einfache Anführungszeichen. Welche Anführungszeichen soll ich verwenden, um das Kennwort in Anführungszeichen zu setzen?

Ich habe versucht, die Anführungszeichen zu umgehen, aber das funktioniert nicht:

WITH PASSWORD \'passwordhere\' 

FEHLER: Syntaxfehler bei oder in der Nähe von "\" ZEILE 1: ALTER USER myuser WITH PASSWORD \passwordhere'

oder

WITH PASSWORD \"passwordhere\" 

bash: -c: Zeile 0: unerwartetes EOF beim Suchen nach übereinstimmendem `'' bash: -c: Zeile 1: Syntaxfehler: unerwartetes Dateiende

Wie entkomme ich diesen Anführungszeichen?

Antwort1

das scheint zu funktionieren:

gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "psql postgres -c 'ALTER USER myuser WITH PASSWORD '\''passwordhere'\'' '; "

-

WITH PASSWORD '\''passwordhere'\'' 

verwandte Informationen