2011-09-03 131 views
4

我需要类似于postgresql 8.4中mysql的GRANT SELECT ON db.* TO user。我在网上找到的解决方案使用for循环来一次选择表并授予它们的权限。但是这意味着每次将新表添加到数据库时都必须重新运行该命令。如何授予数据库中所有表的某些权限?

有没有更直接的解决方案呢?

回答

2

Default privileges附带9.0版本,它不适用于旧版本。

您可以创建一个循环遍历所有表并设置权限的存储过程。

3

请注意,经常授予某个用户对另一个用户的权利使其具有更多或更多的意义,并且更易于追踪。

create user dbuser9; 
create database test9 with owner dbuser9; 
\c test9 dbuser9 
create a bunch of stuff... 
\c postgres postgres 
grant dbuser9 to stan; 
8

假设你没有任何具体的模式定义,所有的表将在“公共”的架构,这样你就可以说:

GRANT <permissions> ON ALL TABLES IN SCHEMA public TO <roles>; 

这仅适用于9.0或以上,虽然,所以你在8.4里运气不好。

参见:http://www.postgresql.org/docs/8.4/static/ddl-schemas.html

+0

那真的没有帮助,因为,无论你在什么数据库上授予在'public'架构中的所有表的权限,这是不太可能的意图...... – Shadur

相关问题