【问题标题】:PostgreSQL - Create user and database from shell failingPostgreSQL - 从 shell 失败创建用户和数据库
【发布时间】:2012-11-26 19:06:15
【问题描述】:

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

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

但是,在我的日志中,我收到了这个错误:

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

有人介意告诉我这里出了什么问题以及如何纠正我的台词。 root 应该有权执行此操作吗?

【问题讨论】:

    标签: sql database postgresql shell root


    【解决方案1】:

    最好的方法是:

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

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

    【讨论】:

    • 我使用 apt-get 安装 postgreSQL,它会自动创建一个 postgres 帐户。是否需要像我在第一篇文章中所做的那样创建一个单独的用户帐户?
    • 取决于您是否需要该数据库的单独用户。我几乎总是这样做,因为特权分离通常是个好主意:)
    【解决方案2】:

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

    createdb -U dbrootuser -W $DBNAME 
    

    查看link 了解完整语法

    【讨论】:

    • 我明白了:/usr/lib/postgresql/8.4/bin/createdb: invalid option -- 'u'
    • 我的错误,区分大小写(应该是 U),已编辑答案。如果您对语法有疑问/想法,请检查那里的链接。
    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多