代码之家  ›  专栏  ›  技术社区  ›  Tom Hale

PostgreSQL`createuser`未指定用户名

  •  1
  • Tom Hale  · 技术社区  · 6 年前

    我跑了:

    $ createuser --pwprompt
    

    Enter password for new role: 
    

    我希望得到一个用户名提示,所以在这一点上我点击 CTRL键 C级 .

    man 页面概要说明用户名是可选的:

    createuser [connection-option...] [option...] [username]
    

    唯一的其他信息是:

    用户名

    用户是什么 createuser 在没有给出的情况下操作?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Laurenz Albe    6 年前

    您未能阅读文档的这一部分(我也花了一段时间):

    --interactive

    如果在命令行中没有指定用户名,则提示输入用户名,并同时提示输入以下选项中的任何一个 -d / -D -r / -R , -s / -S 未在命令行上指定(这是PostgreSQL 9.1之前的默认行为。)

    你没有具体说明 --交互式 ,因此不会提示您。

    因此,PostgreSQL选择默认用户:除非 PGUSER 已设置,这是您的操作系统用户。

    所以,假设您是操作系统用户 postgres

    createuser -U postgres postgres
    

    这当然是愚蠢的,而且会导致

    createuser: creation of new role failed: ERROR:  role "postgres" already exists