首页 文章

以postgres登录但收到错误createuser:新角色的创建失败:错误:必须是超级用户才能创建超级用户

提问于
浏览
5

我需要创建一个超级用户,这样我就可以创建一个db,但是我遇到了麻烦 . 我以用户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

如何创建超级用户?

postgres中 \du 的输出:

postgres=> \du

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

3 回答

  • 1

    某些OSX程序包不会创建 postgres 超级用户数据库帐户 . 超级用户的名称不同,在您的情况下它是 main .

    如果在未指定数据库的情况下执行 psql -U main ,则默认使用与用户相同的名称 . 如果您没有名为 main 的数据库,请使用 -d 选项指示其他数据库 .

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

    psql -U main -d template1
    

    如果您仍想将超级用户授予 postgres ,请在psql内部进行一次登录:

    alter user postgres superuser;
    
  • 12

    在PostgreSQL 9.2的情况下,创建了 postgres 超级用户,但是当我从 postgres 用户创建其他超级用户时,我从未被提示 Shall the new role be a superuser? (y/n) 因此新用户是使用默认权限创建的 . 为了解决这个问题,我只是将此命令作为 postgres 用户运行: ALTER USER myuser WITH SUPERUSER;

  • 2

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

    createuser -s anotheruser
    

相关问题