6

我需要创建一个超级用户,这样我才能创建一个数据库,但我遇到了麻烦。我以用户 postgres 身份登录:

sudo su - postgres

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

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

createuser:创建新角色失败:错误:必须是超级用户才能创建超级用户

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

$ psql -U postgres
psql (9.1.4)
Type "help" for help.

postgres=> create user glassboard
postgres-> ;
ERROR:  permission denied to create role

如何创建超级用户?

\du在 postgres 中的输出:

postgres=> \du

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

5 回答 5

12

一些 OSX 软件包不创建postgres超级用户数据库帐户。超级用户的名称不同,在您的情况下它是main.

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

如果您没有要连接的数据库,请使用template1

psql -U main -d template1

如果您仍然想授予超级用户权限postgres,请在 psql 中登录后执行:

alter user postgres superuser;
于 2013-04-03T18:47:18.260 回答
4

在我的 PostgreSQL 9.2 上,postgres创建了超级用户,但是当我从该postgres用户创建其他超级用户时,我从未收到提示,Shall the new role be a superuser? (y/n)因此新用户是使用默认权限创建的。为了解决这个问题,我只是以用户身份运行了这个命令postgresALTER USER myuser WITH SUPERUSER;

于 2013-06-18T22:06:38.880 回答
4

Mac OS 默认安装

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

1. 使用您当前的(系统)用户连接到您的数据库。下面的示例连接到名为“postgres”的数据库:

psql -d postgres

你应该进入 psql 提示符,比如postgres=#

2. 将超级用户授予知名postgres用户名:

ALTER ROLE postgres superuser;

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

3. 享受!退出)\q

于 2020-08-04T20:01:26.737 回答
1

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

createuser -s anotheruser
于 2017-02-28T16:09:10.333 回答
-1

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

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

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

psql -d postgres

然后我能够创建用户,使用完全相同的命令行在我创建的数据库下登录时不起作用:使用密码'yyyyyy'创建用户xxxx;

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

将数据库 new_created_database 上的所有权限授予 xxxx;

于 2020-03-23T08:29:39.610 回答