PostgreSQL - 从shell失败创建用户和数据库

时间:2012-12-08 22:59:51

标签: sql database postgresql shell root

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

createdb -U dbrootuser -W $DBNAME 

有关完整语法

,请参阅此link

答案 1 :(得分:3)

执行此操作的最佳方法是:

,特别是如果您希望脚本可移植
su --login postgres --command "createdb $DBNAME"

这比使用-U更安全,更安全,更便携。我在所有的posgreSQL脚本中这样做。你可能会发现它是一种有用的技术。显然它仍然需要以root用户身份运行(例如使用sudo)。