3

我有一个在部署时运行的 shell 脚本,我有以下几行:

# Database
createdb $DBNAME
createuser -D -A $DBNAME

但是,在我的日志中,我收到此错误:

  • createdb:无法连接到数据库 postgres:致命:用户“root”的身份验证失败
  • createuser:无法连接到数据库 postgres:致命:用户“root”的身份验证失败

有人介意告诉我这里出了什么问题以及如何纠正我的台词。当然root应该有权这样做吗?

4

2 回答 2

4

最好的方法是:

su --login postgres --command "createdb $DBNAME"

这应该比使用-U. 我在我所有的 posgreSQL 脚本中都是这样做的。您可能会发现它是一种有用的技术。显然它仍然需要以 root 用户身份运行(例如使用sudo)。

于 2012-12-08T23:50:11.053 回答
3

如果您的数据库是安全的,您需要以数据库用户的身份进行连接,而不是作为操作系统的用户。例如:

createdb -U dbrootuser -W $DBNAME 

有关完整语法,请参阅此链接

于 2012-12-08T23:05:52.133 回答