协慌网

登录 贡献 社区

PostgreSQL 错误:致命:角色 “用户名” 不存在

我正在设置 PostgreSQL 9.1。我不能做任何事情的 PostgreSQL:不能createdb ,不能createuser ; 所有操作均返回错误消息

Fatal: role h9uest does not exist

h9uest是我的帐户名,我在该帐户下sudo apt-get install
root帐户,类似的错误仍然存在。

答案

使用操作系统用户postgres创建数据库 - 只要您尚未设置具有与同名操作系统用户(在您的情况下为h9uest )相对应的必要特权的数据库角色即可:

sudo -u postgres -i

按照这里这里的建议。

然后再试一次。 postgres身份操作完成后,请键入exit

或者使用sudo将单个命令createuser作为postgres执行,就像 drees 在另一个答案中演示的那样。

关键是要使用与具有相同名称的数据库角色匹配的操作系统用户,以通过ident验证授予访问权限。 postgres是已初始化数据库集群的默认操作系统用户。手册:

为了引导数据库系统,新初始化的系统始终包含一个预定义角色。该角色始终是 “超级用户”,默认情况下(除非在运行initdb时进行了更改),它将与初始化数据库集群的操作系统用户具有相同的名称。通常,此角色将命名为postgres 。为了创建更多角色,您首先必须作为该初始角色进行连接。

我听说过使用非标准用户名或操作系统用户不存在的奇怪设置。您需要在那里调整策略。

在手册中阅读有关数据库角色客户端身份验证的信息。

在尝试了许多其他人的解决方案之后,但没有成功,这个答案终于对我有所帮助。

https://stackoverflow.com/a/16974197/2433309

简而言之,跑步

sudo -u postgres createuser owning_user

创建一个名称为 ownering_user 的角色(在本例中为 h9uest)。之后,您可以使用您设置的任何帐户名从终端rake db:create

sudo su - postgres

psql template1

在 pgsql 上创建角色,特权为 “超级用户”

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

然后创建用户

CREATE USER username; 
eg. CREATE USER demo;

给用户分配权限

GRANT ROOT TO username;

然后启用该用户的登录,因此您可以从普通$终端psql template1

ALTER ROLE username WITH LOGIN;