Je gère une base de données postgres sur une instance Google Cloud que nous supprimons et recréons quotidiennement dans le cadre de notre construction nocturne. Actuellement, cela se fait manuellement et je veux automatiser.
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;' "
Cela fonctionne bien pour supprimer et recréer la base de données, le problème survient lorsque je dois rétablir le mot de passe ...
gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "psql postgres -c 'ALTER USER myuser WITH PASSWORD 'passwordhere' ; "
La commande gcloud
utilise déjà les guillemets doubles, psql postgres -c
utilise déjà les guillemets simples, quel type de guillemets dois-je utiliser pour mettre le mot de passe entre guillemets ?
J'ai essayé d'échapper les guillemets, mais cela ne fonctionne pas :
WITH PASSWORD \'passwordhere\'
ERREUR: erreur de syntaxe près de "\" LIGNE 1: ALTER USER myuser WITH PASSWORD \passwordhere'
ou
WITH PASSWORD \"passwordhere\"
bash: -c: ligne 0: EOF inattendu en cherchant `'' bash: -c: ligne 1: erreur de syntaxe: fin de fichier inattendue
Comment échapper à ces guillemets ?