我在 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'\''