2 votes

Changer le mot de passe postgres en utilisant ssh à distance

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 ?

3voto

Kevin Lyda Points 459

Cela semble fonctionner :

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

-

WITH PASSWORD '\''passwordhere'\''

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X