
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' ; "
gcloud
El comando ya usa comillas dobles, psql postgres -c
ya 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'\''