PostgreSQL9.0新特性(ZZ)

本文介绍 PostgreSQL 9.0 中新增的 alterdefaultprivileges 功能,该功能允许管理员设置特定用户的默认权限,从而实现创建只读用户的目的。通过示例展示了如何配置新创建的表自动赋予特定用户 SELECT 权限,并提供了撤销权限的方法。
摘要由CSDN通过智能技术生成

尚未验证,有空试验一下!!

/

PostgreSQL9.0提供了一种新的权限方式,即alter default privileges。这个语句的可以解决在数据库中建只读用户的要求。以前在PostgreSQL数据库中,建不了只读用户,即使第一次把所有表的select权限赋给一个用户,但当后面又建新表后,这个只读用户是没有后面新建表的读权限的。而在oracle数据库,只要select any table to xxxx,就建立了一个只读用户。现在PostgreSQL9.0提供了alter default privileges功能后,这个问题不存在了。
例如:
alter default privileges for user jack in schema public grant select on tables to scott;
    使用这个语句后,如果用户jack再建新表时,用户scott就会自动有对这些新表的select权限。
注意执行这个语句后,在这个语句之前jack用户的老表,scott用户仍然是没有select权限的。这时需要手工把旧表的select权赋给scott用户,然后再使用alter default privileges就实现了只读用户scott。

    收回上面的权限的语句为:
alter default privileges for user jack in schema public revoke select on tables from scott;
    注意执行这个语句之前,alter default privileges .... grant语句之后,jack用户的建的表,scott用户已经有select权限的,这个语句不会收回这些select权限。
简单总结说alter default privileges并不会改变已有用户的权限,只有在有对象创建时,才会根据alter default privileges定义的情况给指定的用户加权限,这个语句有点象是在建对象时加了一个权限触发器。

    查看alter default privileges权限的方法是使用/ddp:
part01=# /ddp
         Default access privileges
Owner | Schema | Type  | Access privileges
-------+--------+-------+-------------------
jack  | public | table | scott=r/jack
(1 row)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值