我想在一行中创建一个角色/用户。这是我试过的:
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 user
和create 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'...
答案 0 :(得分:5)
createuser
不是SQL命令,因此无法正常工作。
CREATE USER
是正确的,但您不能将单引号嵌套在单引号中。
应该是
psql -U postgres -c "CREATE USER my_app CREATEDB PASSWORD 'my_password'"