以postgres身份登录,提示错误createuser: creation of new role failed: e



我需要创建一个超级用户,所以我可以创建一个数据库,但我有这个问题。我以用户postgres登录:

sudo su - postgres

但是当我尝试创建一个超级用户时,我遇到了以下问题:

$createuser glassboard;
Shall the new role be a superuser? (y/n) y

createuser: create of new role failed: ERROR:必须是超级用户才能创建超级用户

如果我尝试在psql中创建一个新用户,然后将他设置为超级用户,也会发生这种情况:

$ psql -U postgres
psql (9.1.4)
Type "help" for help.
postgres=> create user glassboard
postgres-> ;
ERROR:  permission denied to create role

如何创建超级用户?

postgres中du的输出:

postgres=> du
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 main      | Superuser, Create role, Create DB, Replication | {}
 postgres  |                                                | {}

一些OSX包不创建postgres超级用户数据库帐户。超级用户的名称不同,在您的示例中是main

当您执行psql -U main而不指定数据库时,它默认使用与用户相同的名称。如果没有名为main的数据库,请使用-d选项指定一个不同的数据库。

如果没有数据库可以连接,使用template1

psql -U main -d template1

如果你仍然想给postgres授予超级用户,在登录psql:

alter user postgres superuser;

在我的PostgreSQL 9.2上,创建了postgres超级用户,但是当我从postgres用户创建额外的超级用户时,我从来没有收到Shall the new role be a superuser? (y/n)的提示,所以新用户是用默认权限创建的。为了解决这个问题,我只是作为postgres用户运行这个命令:ALTER USER myuser WITH SUPERUSER;

Mac OS默认安装

默认超级用户不是postgres,而是当前mac-os用户。为了解决这个问题:

1。使用当前(系统)用户连接到DB。下面的例子连接到名为"postgres":

的数据库
psql -d postgres
你应该进入psql提示符,如 postgres=#

2。为知名postgres用户名授予超级用户:

ALTER ROLE postgres superuser;

如果一切顺利,您将看到响应: ALTER ROLE

3。享受吧! ( q 退出)

我在macOS Sierra(10.12.2)上使用PostgreSQL 9.6(不是说我的解决方案不适合旧版本或新版本),真正对我有效的是用下面的命令行创建另一个用户:

createuser -s anotheruser

在创建数据库并以超级用户身份登录该数据库后,遇到了无法创建新用户的相同问题。

这是为我工作(不幸的是我没有时间研究为什么),在Debian 10, Postgresql12

以默认超级用户登录系统默认数据库(postgres)(在我的情况下,我刚刚安装了它,所以)。

psql -d postgres

,然后我可以创建用户,使用完全相同的命令行,当我在我创建的数据库下登录时不起作用:创建用户XXXX,密码为"yyyyyy";

然后授予我创建的新数据库的所有权限

最新更新