用于添加具有超级用户权限的postgres用户的shell脚本

时间:2014-09-10 05:55:46

标签: linux postgresql shell centos

我正在尝试编写shell脚本来创建具有超级用户权限的postgres db用户,然后通过使用新创建的用户登录来自动运行一些sql脚本。

我尝试了下面的两个脚本,但是我进入了psql交互模式,我们如何避免任何外部输入并提供所需的所有凭据,并在给定路径中使用某些脚本完成创建user / db /和表。如果有什么不清楚,请允许我纠正。

SCRIPT1:

#!/bin/sh
username="testuser"
psql $username << EOF
CREATE ROLE $username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'password';
EOF

在脚本上方运行时的结果为&#39; root&#39; 评论:testuser是一个linux用户而不是postgres用户??

Password:   

评论:用户&#39; testuser&#39;

的密码输入
psql: FATAL:  password authentication failed for user "root"

SCRIPT2

#!/bin/sh
username="testuser"
echo """
CREATE ROLE $username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD    'password';
""" | psql

1 个答案:

答案 0 :(得分:0)

psql -c执行命令而不进入交互模式。 查看http://www.postgresql.org/docs/9.3/static/app-psql.html