我试图在脚本中执行此操作:
» sudo -u postgres createuser -PE -s user1
Enter password for new role:
我不希望postgres
以交互方式请求密码,所以我想这样做:
» sudo -u postgres createuser -PE -s user1 < /tmp/xxx
/tmp/xxx
包含新用户的密码。但它不起作用。如何使这个工作?
答案 0 :(得分:11)
在以超级用户身份(例如postgres
)连接到相关数据库后,您可以使用纯SQL执行此操作:
create user user1 password 'foobar'
如果你需要在脚本中执行此操作,可以将其放入sql文件中,然后将其传递给psql:
» sudo -u postgres psql --file=create_user.sql
答案 1 :(得分:4)
从shell中,您可以使用here-document,如:
#!/bin/sh
psql -U postgres postgres <<OMG
CREATE USER lutser password '`cat /tmp/xxx`' ;
OMG
顺便说一句:我不认为将密码存储在/tmp/
中是个好主意,甚至不是暂时的。