postgres:如何创建具有插入和更新访问权限的角色

时间:2021-04-22 11:47:09

标签: sql postgresql admin

我有一个用户 db_owner,他是我名为“Sales”的数据库的所有者。

现在我必须创建两个组(sales_rosales_riu),然后我会将用户添加到这些组中。

sales_ro 组应继承(来自 db_owner)对表的读取访问权限并在 Sales db 中的函数上执行

sales_riu 组应继承(自 db_owner)对表的插入和更新访问权限,并在 Sales 数据库中的函数上执行。

我们可以在 Postgres 中创建这样的两个组吗?

1 个答案:

答案 0 :(得分:0)

您无需创建群组即可实现此目的。您只需创建角色并将其分配给您想要的用户即可。例如:

CREATE ROLE sales_ro;
CREATE ROLE sales_riu;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO sales_ro;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO sales_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO sales_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT EXECUTE ON FUNCTIONS TO sales_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT,INSERT,UPDATE ON TABLES TO sales_riu;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT EXECUTE ON FUNCTIONS TO sales_riu;

之后只需将角色授予预期用户:

GRANT sales_ro TO your_user_1;
GRANT sales_riu TO your_user_2;

请参阅 link 1link 2 以分别了解有关 ALTER DEFAULT PRIVILEGESCREATE ROLE 的更多信息。

从上面的链接引用以下几点:

<块引用>

CREATE ROLE 向 PostgreSQL 数据库集群添加一个新角色。职务 是一个可以拥有数据库对象并拥有数据库的实体 特权;角色可以被视为“用户”、“组”或两者 取决于它的使用方式。

可以将具有 LOGIN 属性的角色视为用户。角色 没有这个属性对于管理数据库权限很有用