postgres的权限管理(一)

本文探讨了两种数据库权限管理方式:用户组管理和单个用户授权。推荐使用用户组管理,通过创建不同权限的用户组如PROJ1_DEV_GROUP, PROJ1_WRITE_GROUP, PROJ1_VIEW_GROUP,并分配相应的增删查权限,以及对新用户设置权限。这种方式便于后期权限维护。而不推荐对每个用户单独授权,因为操作繁琐且不适用于新用户。
摘要由CSDN通过智能技术生成

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

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换成对应的用户名)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值