【问题标题】:psql fatal role does not existpsql 致命角色不存在
【发布时间】:2015-03-28 15:10:46
【问题描述】:

我最近安装了最新版本的 Ubuntu,但还不习惯。我在连接 PostgreSQL 和 pgadmin3 时遇到了几个问题。

我尝试按照几个教程来创建一个可以在 pgadmin3 中使用的 localhost 服务器。我并没有真正达到目标,我认为我通过安装、卸载、安装、卸载、尝试找到的答案让情况变得更糟......此时我不确定我的 PostgreSQL 是否干净。有可能我安装了两个 PostgreSQL,我不确定。我试图卸载它,但我遇到了一个错误,基本上说 PostgreSQL 不在 sudo 中。

问题是我现在在控制台中运行 psql 时出现此错误:

$psql
psql: FATAL: role "user" does not exist 

我找不到pg_hba.conf,此时我不敢尝试关注任何其他帖子来让事情变得更糟。

我怎样才能做到这一点?

【问题讨论】:

  • pg_hba.conf 在这里无关紧要。您正在尝试使用用户名 user 连接 - 但该帐户/用户名/角色不存在。启动psql时需要使用-U开关指定现有数据库用户
  • 由于报错信息来自psql,说明你已经连接到DBMS了,不用乱搞pg_hba.conf。如消息所述:用户名“user”不存在。顺便说一句:user 对用户来说是个糟糕的名字。你会给你的孩子打电话child 吗?
  • 我不清楚,但不是用户,而是我写的会话的名称。今晚我会尝试所有这些。

标签: postgresql ubuntu


【解决方案1】:

虽然如果你在 Windows 上遇到这个问题有点老,但只需删除 Postgres data 目录并通过运行 initdb /data 重新初始化 Postgres 数据

【讨论】:

    【解决方案2】:

    在 Windows 10 中这很好用

    pg_restore --format=c --verbose --no-owner --no-privileges --dbname=MYDB --username=postgres --no-password --jobs=8 F:/MYBK.backup

    --username=(role) 和--no-password 是必需的

    【讨论】:

      【解决方案3】:
      sudo -u postgres createuser user
      

      可以帮助你创建一个拥有postgres所有权限的新用户

      【讨论】:

      • 登录 $ sudo su - postgres,然后连接到 $ psql psql (9.5.14) 键入“help”寻求帮助。 postgres=#
      【解决方案4】:

      正如 cmets 中所指出的,您的 pg_hba.conf 看起来不错。

      通常,数据库将以 postgres 用户身份运行(检查 ps aux | grep postgres 以找出运行 postgres 的用户名)。

      以该用户身份登录,例如sudo su - postgres,然后创建一个与您的普通Ubuntu用户帐户(createuser username)匹配的用户,最后创建一个具有相同名称的数据库并将所有者(-O)设置为那个数据库用户,像这样:createdb -O username username)。

      这应该可以调用psql 工作,并且 pgadmin - 只要您以默认用户身份启动它,用户名 - 应该也可以工作。

      编辑:默认情况下,psql 将使用您的 Linux 用户名作为数据库用户名和数据库名的默认值。您可以使用-U someotherusername 覆盖用户名,并通过将该数据库名称添加到命令行来连接到不同的数据库,例如psql someotherdbname。您可能还会发现psql -l 对列出现有数据库很有用。

      【讨论】:

      • 您不一定需要该用户的数据库。启动psql时可以指定数据库:psql db_name
      • 我添加了一个编辑来澄清这一点。但在大多数情况下,您会希望在没有参数的情况下调用 psql 来“正常工作”,所以这就是我的答案所关注的。
      • 您好,感谢您的回答,
      • 抱歉重复发帖 嗨,感谢您的帮助,postgres 现在可以了。尽管如此,我还是无法连接到 pgadmin3,似乎 pgadmin3 不支持服务器版本,但这是另一个话题......无论如何,再次感谢。
      • sudo su - postgres ------ createuser jonny -------- createuser: creation of new role failed: ERROR: role "jonny" already exists --------- exit; whoami; -------- jonny ---------- psql ---------- FATAL: role "jonny" does not exist
      【解决方案5】:

      使用 postgres 用户:

      sudo su postgres
      

      然后使用 psql。

      如果您仍然遇到问题,请查看此链接:PostgreSQL error: Fatal: role "username" does not exist

      【讨论】:

        猜你喜欢
        • 2013-02-24
        • 2018-02-18
        • 1970-01-01
        • 2017-03-08
        • 2014-03-15
        • 2013-05-21
        • 1970-01-01
        相关资源
        最近更新 更多