我需要创建一个超级用户,所以我可以创建一个数据库,但我有这个问题。我以用户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";
然后授予我创建的新数据库的所有权限