我在一个谷歌云实例上运行一个 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 行:语法错误:文件意外结束
我如何逃避那些引号?
这似乎有效:
-