以编程方式创建新的postgres用户,无需交互式干预

时间:2013-06-01 10:20:45

标签: postgresql

我试图在脚本中执行此操作:

» sudo -u postgres createuser -PE -s user1
Enter password for new role:

我不希望postgres以交互方式请求密码,所以我想这样做:

» sudo -u postgres createuser -PE -s user1 < /tmp/xxx

/tmp/xxx包含新用户的密码。但它不起作用。如何使这个工作?

2 个答案:

答案 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/中是个好主意,甚至不是暂时的。