时间:2010-07-26 16:21:21

标签: database postgresql permissions schema

1 个答案:

答案 0 :(得分:1)

我们最终采取的解决方案如下:

第1点

每个用户一个数据库。用户可以根据需要创建任意数量的表和架构。不可能跨数据库连接。另一种方法是检索子集并在客户端上管理结果,显然不是最有效的方法。

第2点

这可以通过为给定数据库定义特定所有权和权限并删除默认“公共”行为来实现。这样,只有属于允许组或属于所有者的用户才能访问该内容。

注意:PostgreSQL使用多级权限,这意味着即使数据库由某人拥有,表也可以由其他人拥有。

第3点

可以使用WITH GRANT OPTION完成。

第4点

没有自动化的方法。确保这一点的唯一方法是限制对所有现有数据库的“公共”访问。

第5点

基于每个用户使用search_path是唯一的方法,使用多个用户访问不同的模式(需要时)。显然,如果没有具有适当search_path的用户,则架构未知应用程序无法“到达”其他架构。