不允许超级用户登录

Ant*_*ony 32 postgresql

我使用以下命令创建了一个超级用户门户

create role portal with superuser password 'portal'
Run Code Online (Sandbox Code Playgroud)

当我尝试使用门户用户登录 postgres 时,我在 Rails 中收到以下错误。

FATAL:  role "portal" is not permitted to log in
Run Code Online (Sandbox Code Playgroud)

我无法理解正在发生的事情。

当然,我可以使用 login 命令更改用户以启用门户用户登录。我想了解为什么超级用户无法登录。

Cra*_*ger 57

您没有指定LOGIN权限:

ALTER ROLE portal WITH LOGIN;
Run Code Online (Sandbox Code Playgroud)

如果你使用CREATE USER的不是CREATE ROLELOGIN权利自动授予; 否则,您必须WITHCREATE语句的子句中指定它。

超级用户天生就没有LOGIN权利;仍会为此权限对超级用户执行权限检查。这样做的原因是您可以拥有一个可以使用的超级用户角色SET ROLE,但不能直接连接。


小智 5

CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';
Run Code Online (Sandbox Code Playgroud)