Postgres:在一行中创建角色

时间:2018-05-19 21:37:34

标签: postgresql command-line

我想在一行中创建一个角色/用户。这是我试过的:

psql -U postgres -c 'createuser my_app with createdb login password 'my_password';'
psql: warning: extra command-line argument "with" ignored
psql: warning: extra command-line argument "createdb" ignored
psql: warning: extra command-line argument "login" ignored
psql: warning: extra command-line argument "password" ignored
psql: warning: extra command-line argument "'my_password';'" ignored
psql: FATAL:  database "my_app" does not exist

代替createuser我也尝试了create usercreate role,但无论如何,我都会遇到同样的错误。我在 Windows 上使用(PostgreSQL)9.6.2

我做错了什么?

更新

我尝试使用双引号,但出于某种原因,postgres似乎不喜欢我的双引号。在单引号内使用双引号神秘地起作用 - >谢谢@Laurenz

psql -U postgres -c "createuser my_app with createdb login password 'my_password';"
ERROR:  syntax error at or near "createuser"
LINE 1: createuser my_app with createdb login password 'my_password'...

1 个答案:

答案 0 :(得分:5)

createuser不是SQL命令,因此无法正常工作。

CREATE USER是正确的,但您不能将单引号嵌套在单引号中。

应该是

psql -U postgres -c "CREATE USER my_app CREATEDB PASSWORD 'my_password'"