15

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

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

我不想postgres以交互方式询问密码,所以我想做:

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

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

4

2 回答 2

13

postgres在以超级用户(例如)连接到相关数据库后,您可以使用普通 SQL 执行此操作:

create user user1 password 'foobar'

如果您需要在脚本中执行此操作,您可以将其放入 sql 文件中,然后将其传递给 psql:

» sudo -u postgres psql --file=create_user.sql
于 2013-06-01T10:24:22.530 回答
4

在 shell 中,您可以使用 here-document,例如:

#!/bin/sh

psql -U postgres postgres <<OMG
 CREATE USER lutser password '`cat /tmp/xxx`' ;
OMG

顺便说一句:我认为将密码存储在 中/tmp/不是一个好主意,甚至暂时也不是。

于 2013-06-01T15:59:53.827 回答