登录为Postgres的,但得到的错误CREATEUSER:新角色创建失败:错误:必须是超级用户创建超级用户

Eri*_*win 5 postgresql

我需要创建一个超级用户,这样我就可以创建一个db,但是我遇到了麻烦.我以用户postgres身份登录:

sudo su - postgres
Run Code Online (Sandbox Code Playgroud)

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

$createuser glassboard;
Shall the new role be a superuser? (y/n) y
Run Code Online (Sandbox Code Playgroud)

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

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

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

postgres=> create user glassboard
postgres-> ;
ERROR:  permission denied to create role
Run Code Online (Sandbox Code Playgroud)

如何创建超级用户?

\dupostgres的输出:

postgres=> \du

                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 main      | Superuser, Create role, Create DB, Replication | {}
 postgres  |                                                | {}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ité 12

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

如果psql -U main不指定数据库,则默认使用与用户相同的名称.如果您没有命名main数据库,请使用该-d选项指示其他数据库.

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

psql -U main -d template1
Run Code Online (Sandbox Code Playgroud)

如果你仍然要授予超级用户权限postgres,请执行一次登录psql:

alter user postgres superuser;
Run Code Online (Sandbox Code Playgroud)


yel*_*von 5

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


epo*_*pox 5

在 Mac OS 上默认安装

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

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

psql -d postgres
Run Code Online (Sandbox Code Playgroud)

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

2. 将超级用户授予众所周知的postgres用户名:

ALTER ROLE postgres superuser;
Run Code Online (Sandbox Code Playgroud)

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

3. 享受!退出)\q