Изменить postgres пароль с помощью удаленного ssh

Я использую базу данных postgres в экземпляре Google Cloud, которую мы удаляем и воссоздаем ежедневно как часть нашей ночной сборки. В настоящее время это делается вручную, и я хочу автоматизировать его.

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

Это отлично работает для удаления и воссоздания базы данных, проблема возникает, когда мне нужно повторно установить пароль ...

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

gcloud команда уже использует двойные кавычки, psql postgres -c уже использует одинарные кавычки, какие кавычки мне следует использовать, чтобы заключить пароль в кавычки?

Я попытался избежать кавычек, но это не работает:

WITH PASSWORD \'passwordhere\' 

ОШИБКА: синтаксическая ошибка рядом с "\" СТРОКА 1: ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ myuser WITH ПАРОЛЬ \ passwordhere '

или

WITH PASSWORD \"passwordhere\" 

bash: -c: line 0: неожиданный EOF при поиске совпадающего bash: -c: строка 1: синтаксическая ошибка: неожиданный конец файла

Как избежать этих кавычек?

2
задан 11 March 2018 в 13:10
1 ответ

похоже, что это работает:

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

-

WITH PASSWORD '\''passwordhere'\'' 
3
ответ дан 3 December 2019 в 10:33

Теги

Похожие вопросы