如何为数据库中的所有表授予某些权限?

Hyd*_*erA 4 database postgresql permissions

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

有一个更直接的解决方案吗?

小智 8

假设您没有定义任何特定模式,那么您的所有表都将位于"公共"模式中,因此您可以说:

GRANT <permissions> ON ALL TABLES IN SCHEMA public TO <roles>;
Run Code Online (Sandbox Code Playgroud)

这只适用于9.0或以上,所以你在8.4中运气不好.

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


Fra*_*ens 2

默认权限是 9.0 版本附带的,在旧版本中不可用。

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