限制在PostgreSQL上创建用户的访问权限

时间:2020-07-02 02:47:42

标签: sql postgresql

使用PostgreSQL,并且希望只有管理员才能创建新用户。同时允许一些非管理员用户对我们的表进行读写访问。

我找不到解决办法。我担任过一个叫webuser的角色:

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO webuser;

但是现在webuser可以访问呼叫CREATE USERGRANT ROLE。如何在允许webuser进入数据库表的同时从SELECT, INSERT, UPDATE, DELETE删除访问权限以执行用户管理操作?

1 个答案:

答案 0 :(得分:2)

一个用户只有拥有createrole属性,才能创建其他用户:创建用户时,默认情况下未分配此属性。

Doc.说:

CREATEROLE NOCREATEROLE

这些子句确定是否允许一个角色创建新角色(即执行CREATE ROLE)。 CREATEROLE的角色 特权还可以更改和删除其他角色。如果未指定, 默认为NOCREATEROLE。

使用createrole创建用户,或者运行超级用户alter user webuser createrole

要撤消该特权,请运行alter user webuser nocreaterole

NB:

CREATE USER现在是CREATE ROLE的别名。唯一的区别是 当命令拼写为CREATE USER时,LOGIN被假定为 默认值,而拼写该命令时则假定为NOLOGIN 角色。