我需要创建一个超级用户,这样我就可以创建一个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 回答
某些OSX程序包不会创建
postgres
超级用户数据库帐户 . 超级用户的名称不同,在您的情况下它是main
.如果在未指定数据库的情况下执行
psql -U main
,则默认使用与用户相同的名称 . 如果您没有名为main
的数据库,请使用-d
选项指示其他数据库 .如果您没有要连接的数据库,请使用
template1
如果您仍想将超级用户授予
postgres
,请在psql内部进行一次登录:在PostgreSQL 9.2的情况下,创建了
postgres
超级用户,但是当我从postgres
用户创建其他超级用户时,我从未被提示Shall the new role be a superuser? (y/n)
因此新用户是使用默认权限创建的 . 为了解决这个问题,我只是将此命令作为postgres
用户运行:ALTER USER myuser WITH SUPERUSER;
我在macOS Sierra(10.12.2)上使用PostgreSQL 9.6(不是说我的解决方案不适用于旧版本或更新版本),对我来说真正有用的是使用以下命令行创建另一个用户: