リモート SSH を使用して postgres パスワードを変更する

リモート SSH を使用して postgres パスワードを変更する

私は Google Cloud インスタンスで postgres データベースを実行しており、夜間ビルドの一環として毎日これを削除して再作成しています。現在これは手動で行われていますが、自動化したいと考えています。

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: ALTER USER myuser WITH PASSWORD \passwordhere'

または

WITH PASSWORD \"passwordhere\" 

bash: -c: 行 0: 一致する `'' を検索中に予期しない EOF が発生しました bash: -c: 行 1: 構文エラー: 予期しないファイルの終了です

どうすれば引用符を回避できますか?

答え1

これは動作するようです:

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

-

WITH PASSWORD '\''passwordhere'\'' 

関連情報