使用远程 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'\'' 

相关内容