如何在 postgresql 中创建角色组

bar*_*oma 5 sql postgresql

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

  • 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在所有表上选择特权,在所有表 editor上选择、插入和更新特权。

我的用户将在这些组中。

我怎样才能做到这一点?

Vao*_*sun 13

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
Run Code Online (Sandbox Code Playgroud)

之后,只需将组授予用户:

GRANT editor TO your_user;
Run Code Online (Sandbox Code Playgroud)

等等

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

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

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


Lau*_*lbe 5

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

在你的情况下:

CREATE ROLE viewer;
GRANT <whatever> TO viewer;
GRANT viewer TO myname;
Run Code Online (Sandbox Code Playgroud)

然后myname将享受授予 的所有权限viewer,并且您不必为每个用户授予和撤销权限而烦恼。