如何向数据库中的所有表授予特定权限?

5
我需要类似于mysql的GRANT SELECT ON db.* TO user在postgresql 8.4中的解决方案。我在网上找到的解决方案使用for循环逐个选择表并授予权限。但这意味着每次向数据库添加新表时都必须重新运行该命令。
是否有更简单的解决方案?
3个回答

8

假设您没有特定的模式定义,那么所有的表都将在“public”模式中,这样你就可以说:

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


那真的没有帮助,因为它授予public模式中所有表的权限,无论你在哪个数据库中,这不太可能是意图... - Shadur

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;

2

默认权限是从9.0版本开始提供的,旧版本中不可用。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接