PostgreSQL9.0新特性介绍: alter default privileges,解决只读用户的问题

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)



转载鈥斺擯ostgreSQL9.0新特性介绍:<wbr></p>alter<wbr>default<wbr>privileges,解决只读用户的问题
但是目前来看,无法通过如下设定,设置用户查询权限 GRANT SELECT ON nvams.am_fixture TO fuser;

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...