Cambiar la contraseña de Postgres usando ssh remoto

Cambiar la contraseña de Postgres usando ssh remoto

Estoy ejecutando una base de datos de Postgres en una instancia de Google Cloud que colocamos y recreamos diariamente como parte de nuestra compilación nocturna. Actualmente esto se hace manualmente y quiero automatizarlo.

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

Esto funciona bien para eliminar y recrear la base de datos, el problema surge cuando tengo que volver a configurar la contraseña...

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

gcloudEl comando ya usa comillas dobles, psql postgres -cya usa comillas simples, ¿qué comillas debo usar para poner la contraseña entre comillas?

Intenté escapar de las comillas, pero no funciona:

WITH PASSWORD \'passwordhere\' 

ERROR: error de sintaxis en o cerca de "\" LÍNEA 1: ALTERAR USUARIO myuser CON CONTRASEÑA \contraseñaaquí'

o

WITH PASSWORD \"passwordhere\" 

bash: -c: línea 0: EOF inesperado mientras se busca `'' coincidente bash: -c: línea 1: error de sintaxis: final de archivo inesperado

¿Cómo puedo escapar de esas comillas?

Respuesta1

esto parece funcionar:

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

-

WITH PASSWORD '\''passwordhere'\'' 

información relacionada