我需要在postgresql 8.4中使用与mysql的GRANT SELECT ON db.* TO user
类似的东西。我在网上找到的解决方案使用for循环一次选择表并为它们授予权限。但这意味着每次将新表添加到数据库时我都必须重新运行该命令。
对此有更直接的解决方案吗?
答案 0 :(得分: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
答案 1 :(得分: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 :(得分:2)
Default privileges附带版本9.0,旧版本不提供。
您可以创建一个循环遍历所有表的存储过程并设置权限。