postgres的权限管理

推荐权限管理方式:用户组

1、创建不同权限的用户组

create role PROJ1_DEV_GROUP; //表的Owner,拥有表的所有操作权限。
create role PROJ1_WRITE_GROUP; //表的写入权限,可以写入数据至相应表。
create role PROJ1_VIEW_GROUP; //查看表数据权限,可以查看相应表的数据。

2、对各个用户组进行授权

授权PROJ1拥有SCHEMA1中的相关权限。
grant create,usage on schema public to PROJ1_DEV_GROUP;
grant usage on schema public to PROJ1_WRITE_GROUP;
grant select on schema public to PROJ1_VIEW_GROUP;

3、各个用户组设定对未来新建表的权限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PROJ1_VIEW_GROUP; //设置只读

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT usage ON TABLES TO PROJ1_WRITE_GROUP; // 设置写权限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT create, usage ON TABLES TO PROJ1_DEV_GROUP; //建表权限

4、创建新用户并设置只读权限

CREATE USER dev_test WITH PASSWORD 'test@123456'; //创建新用户

GRANT PROJ1_VIEW_GROUP to dev_test; //给该用户设置所有表只读权限 

注意:后续权限的增加和收回都只需操作对应的用户组即可,比较方便

不推荐的管理方式:pgsql对单个用户进行权限管理

1、对单个用户授权

GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC to users;

所有用户对建表事件进行监听,有新建表则自动加上select权限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PUBLIC; //默认所有人对在public Schema中新创建的表具有读权限。

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PROJ1_VIEW_GROUP; //也可对单个用户组进行监听,用户组下的所有用户即可获得新建表的权限

注意:该命令只对已有用户起作用,新建用户需重新执行该sql或只对单个用户进行设置(将PUBLIC换成对应的用户名)


参考文档

posted @ 2020-12-23 16:23  大碗油泼  阅读(2040)  评论(0编辑  收藏  举报