代码之家  ›  专栏  ›  技术社区  ›  Sun

Postgres-CreateUser不工作[重复]

  •  0
  • Sun  · 技术社区  · 7 年前

    我第一次尝试设置Postgres,我需要创建一个具有读取和创建数据库权限的用户。但是,当我在终端中使用“createuser用户名”时,会收到以下消息:

    createUser:无法连接到数据库postgres:致命:角色“tom”不存在

    汤姆是我现在登录的Ubuntu用户帐户。我尝试创建一个用户名“postgres”,然后执行“psql-u psql template1”,这样我就可以创建一个数据库,并为我的Rails应用程序分配一个所有者。

    有什么帮助吗?

    0 回复  |  直到 6 年前
        1
  •  111
  •   Craig Ringer    11 年前

    你提到过Ubuntu,所以我猜你是通过apt从Ubuntu安装了PostgreSQL包的。

    如果是这样的话, postgres PostgreSQL用户帐户已存在,并且配置为可通过 peer 中的Unix套接字身份验证 pg_hba.conf . 通过运行命令 Postgres公司 Unix用户,例如:

    sudo -u postgres createuser owning_user
    sudo -u postgres createdb -O owning_user dbname
    

    这一切都在 Ubuntu PostgreSQL 这是谷歌第一次点击“ubuntu postgresql”的文档,它包含了许多堆栈溢出问题。

    (您忽略了操作系统和版本、PostgreSQL的安装方式等细节,使得这个问题很难回答。)

        2
  •  41
  •   user3402754    6 年前

    See git gist with instructions here

    运行此:

     sudo -u postgres psql
    

    psql -U postgres
    

    在你的终点站进入Postgres

    postgres=#
    

    CREATE USER new_username;
    

    注意:用您要创建的用户替换新的\用户名,在您的情况下将是Tom。

    postgres=# CREATE USER new_username;
    CREATE ROLE
    

    由于您希望该用户能够创建数据库,因此需要将角色更改为superuser。

    postgres=# ALTER USER new_username SUPERUSER CREATEDB;
    ALTER ROLE
    

    确认一切顺利,

    postgres=# \du
                             List of roles
     Role name |                   Attributes                   | Member of 
    -----------+------------------------------------------------+-----------
    new_username     | Superuser, Create DB                           | {}
    postgres         | Superuser, Create role, Create DB, Replication | {}
    root             | Superuser, Create role, Create DB              | {}
    
    postgres=# 
    

    更新/修改(对于Mac):

    我最近在Mac上遇到了类似的错误:

    psql: FATAL: role "postgres" does not exist

    这是因为我安装的数据库超级用户的角色名与您的登录名(短)相同。

    但是一些Linux脚本假定超级用户具有 postgres

    我是怎么解决的?

    如果安装了 homebrew 运行:

    /usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

    或:

    /usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

    如果安装了 postgres.app 对于Mac运行:

    /Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres

    P.S:用PostgreSQL版本替换10.5

        3
  •  26
  •   Tanmay    12 年前
    sudo -u postgres createuser -s tom 
    

    这应该对您有所帮助,因为如果管理员没有为您创建PostgreSQL用户帐户,就会发生这种情况。也可能是您被分配了一个不同于您的操作系统用户名的PostgreSQL用户名,在这种情况下,您需要使用-u开关。

        4
  •  5
  •   Rocky Inde    10 年前

    您的错误已发布在官方文档中。你可以 read this article .

    我已经从那篇文章中复制了您的原因(以及超链接的网址):

    如果管理员没有为您创建PostgreSQL用户帐户,就会发生这种情况。(PostgreSQL用户帐户与操作系统用户帐户不同。)如果您是管理员,请参见 Chapter 20 有关创建帐户的帮助。您需要成为安装PostgreSQL的操作系统用户(通常是Postgres),才能创建第一个用户帐户。也可能是为您分配了一个与操作系统用户名不同的PostgreSQL用户名;在这种情况下,您需要使用-u开关或设置pguser环境变量来指定PostgreSQL用户名。

    出于您的目的,您可以:

    1)创建PostgreSQL用户帐户:

    sudo -u postgres createuser tom -d -P
    

    (the -P 设置密码的选项;密码 -d 允许为用户名“tom”创建数据库的选项。注意,tom是您的操作系统用户名。这样,就可以执行postgresql命令 sudo ING)

    2)现在您应该能够执行 createdb 以及其他postgresql命令。

        5
  •  4
  •   Saman Mohamadi    8 年前

    1-作为默认PostgreSQL用户登录(Postgres)

    sudo -u postgres -i
    

    2-作为Postgres用户。使用添加新的数据库用户 createuser 命令

    [postgres]$ createuser --interactive
    

    3出口

    [postgres]$ exit
    
        6
  •  1
  •   Sagar T    7 年前

    我也有同样的问题,我就是这么做的

    Sudo Su-Postgres公司

    创建用户odoo-u postgres-drsp p以获取密码 ( 奥多 用户名 你想让Postgres访问)

        7
  •  1
  •   ostergaard    6 年前

    在Windows上使用:

    C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>

    添加 --superuser --createdb 视情况而定。

    https://www.postgresql.org/docs/current/static/app-createuser.html 更多选择。

        8
  •  -3
  •   Community CDub    8 年前

    您需要首先运行initdb。它将创建数据库集群和初始设置

    How to configure postgresql for the first time? http://www.postgresql.org/docs/8.4/static/app-initdb.html

    推荐文章