Alterar senha postgres usando ssh remoto

3

Estou executando um banco de dados postgres em uma instância do Google Cloud que descartamos e recriamos diariamente como parte de nossa criação noturna. Atualmente isso está sendo feito manualmente e eu quero automatizá-lo.

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;' "

Isso funciona bem para descartar e recriar o banco de dados, o problema surge quando eu tenho que re-configurar a senha ...

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

O comando gcloud já está usando aspas duplas, psql postgres -c já está usando as aspas simples, que citações devo usar para colocar a senha entre aspas?

Eu tentei escapar das aspas, mas não funciona:

WITH PASSWORD \'passwordhere\' 

ERROR: syntax error at or near "\" LINE 1: ALTER USER myuser WITH PASSWORD \passwordhere'

ou

WITH PASSWORD \"passwordhere\" 

bash: -c: line 0: unexpected EOF while looking for matching ''' bash: -c: line 1: syntax error: unexpected end of file

Como posso escapar dessas citações?

    
por Jan Vladimir Mostert 11.03.2018 / 10:34

1 resposta

3

isso parece funcionar:

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

-

WITH PASSWORD '\''passwordhere'\'' 
    
por 11.03.2018 / 10:41