postgres的权限管理(二):赋权管理

postgres的赋权是层层赋权:

(1) 先把schema的权限授予用户

(2)把schema.table的权限授予用户

注意:如果直接跳过第一步,第二步grant select on schema.table to user,这种赋值会成功,但是查询还是没有权限。

如果要跳过第一步,可以再创建schema的时候指定AUTHORIZATION user,即:create schema XXX  AUTHORIZATION  user;然后再进行grant.

 

举例:

 例子中我使用了role对权限进行管理,先将操作的权限赋role,然后将role赋给dbuser(和直接赋权给dbuser一样).

(1)层层赋权测试

postgres=# \c
You are now connected to database "postgres" as user "gpadmin".

postgres=# create schema shm4;
CREATE SCHEMA

postgres=# create table shm4.t(id int,m varchar(10));
CREATE TABLE

#使用dbuser用户进行查询shm4.t
postgres=> \c
You are now connected to database "postgres" as user "dbuser".


#没有权限查询
postgres=> select * from shm4.t;
ERROR:  permission denied for schema shm4
LINE 1: select * from shm4.t;
#先赋权 ,role1为角色,赋予了用户dbuser(前面已经建好,这里可以忽略)
postgres=# grant usage on schema shm4 to role1;
GRANT

postgres=# grant select on  shm4.t to role1;
GRANT


postgres=> \c
You are now connected to database "postgres" as user "amr_out".
#已经有权限查询

postgres=> select * from shm4.t;
 id | m 
----+---
(0 rows)

(2)AUTHORIZATION测试

postgres=# \c
You are now connected to database "postgres" as user "gpadmin".

#执行默认的AUTHORIZATION
postgres=# create schema shm5 AUTHORIZATION role1;
CREATE SCHEMA

postgres=# create table shm5.t(id int,m varchar(10));

#如果直接查询shm5.t,查询失败
postgres=> \c
You are now connected to database "postgres" as user "amr_out"
postgres=> select * from  shm5.t;
ERROR:  permission denied for relation t

#再gpadmin用户下对权限进行grant
postgres=# \c
You are now connected to database "postgres" as user "gpadmin".
postgres=# grant select on  shm5.t to role1;
GRANT


#已经有权限查询
postgres=> \c
You are now connected to database "postgres" as user "amr_out".
postgres=> select * from  shm5.t;
 id | m 
----+---
(0 rows)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值