如何在postgresql中创建角色组

时间:2017-12-13 08:22:04

标签: sql postgresql

我可以在postgresql中创建一个角色。

  • iterator = &ds[5];

我可以为这个用户设置数据库架构的特权。

  • CREATE ROLE myname WITH LOGIN PASSWORD 'pass';

并为用户选择特权。

  • GRANT USAGE ON SCHEMA public TO myname;

但我的数据库中有这么多用户。我不想为所有用户设置这些权限。实际上我想创建角色组名:

  • 观众
  • 编辑
  • 管理员

GRANT SELECT ON ALL TABLES IN SCHEMA public TO myname;将在所有表格上选择特权, viewer将在所有表格上选择,插入和更新特权。

我的用户将在这些群组中。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

CREATE ROLE viewer;
CREATE ROLE editor;
CREATE ROLE admin;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO viewer;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO viewer;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT,INSERT,UPDATE ON TABLES TO editor;
GRANT some_other_privs_to_admin_group

之后只需向用户授予组:

GRANT editor TO your_user;

等等

https://www.postgresql.org/docs/current/static/sql-alterdefaultprivileges.html https://www.postgresql.org/docs/current/static/sql-createrole.html

  

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

  

具有LOGIN属性的角色可以被视为用户。角色   没有此属性对于管理数据库权限非常有用

答案 1 :(得分:1)

出于这个原因,建议使用“组”,即添加用户的角色(通​​常使用NOLOGIN)(通过向其授予角色)。

在你的情况下:

CREATE ROLE viewer;
GRANT <whatever> TO viewer;
GRANT viewer TO myname;

然后myname将享有授予viewer的所有权限,您无需为每个用户授予和撤销权限。