Postgres:psql:致命:角色" postgres"不存在

时间:2015-07-16 21:24:34

标签: linux postgresql

我一直在使用PostgreSQL几天,它一直工作正常。我一直在通过默认的postgres数据库用户以及另一个有权限的用户使用它。

今天中午(在一切工作正常之后)它停止工作,我再也无法回到数据库了。我会尝试:psql,它会提出psql: FATAL: role "postgres" does not exist

同样,如果我尝试从其他用户psql -d postgres尝试psql: FATAL: role "otheruser" does not exist。 (请注意,我有一个名为postgres的数据库,它一直在运行。)

更新

似乎其中一台访问服务器的计算机崩溃,可能以某种方式删除了数据库的所有用户。我会尝试重新安装。

2 个答案:

答案 0 :(得分:0)

角色postgres和其他用户可能会被删除。如果您至少有一个具有超级用户权限的用户,则可以再次创建这些角色。 类似问题提到here

答案 1 :(得分:0)

要检查用户是否存在而无法使用psql登录,您可以使用以下方法:

  • 停止postgres
  • 以单用户模式重新启动它(指定数据目录)
  • 查询pg_user全局表
  • 通常重启postgres

示例:

$ sudo -i -u postgres
...
postgres@u64:/usr/local/pg95a1$ bin/postgres --single -D $PWD/data

PostgreSQL stand-alone backend 9.5alpha1
backend> select usename from pg_user;
     1: usename (typeid = 19, len = 64, typmod = -1, byval = f)
    ----
     1: usename = "postgres"    (typeid = 19, len = 64, typmod = -1, byval = f)
    ----
     1: usename = "daniel"  (typeid = 19, len = 64, typmod = -1, byval = f)
    ----
     1: usename = "joe" (typeid = 19, len = 64, typmod = -1, byval = f)
    ----
     1: usename = "bob" (typeid = 19, len = 64, typmod = -1, byval = f)
    ----

ctrl D 以终止单用户会话。