我可以在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
将在所有表格上选择,插入和更新特权。
我的用户将在这些群组中。
我该怎么做?
答案 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
的所有权限,您无需为每个用户授予和撤销权限。