在 PostgreSQL 8.1 中如何对用户隐藏表?

在 PostgreSQL 8.1 中如何对用户隐藏表?

我有一个 Windows 应用程序需要集成到现有的 PostgreSQL 8.1 数据库。我使用来自http://www.pgoledb.com/

这个特定的应用程序尝试加载每个表的详细信息,即使它只需要访问一个表。如果我不授予用户从所有这些表中进行选择的权限,应用程序在尝试加载每个表时会抛出错误。如果我授予用户从所有这些表中进行选择的权限,应用程序加载所有元数据的速度会非常慢。

我似乎找不到一种方法来“隐藏”大多数表,这样应用程序就不知道它们的存在,也不会尝试对它们做任何事情。这样的功能/权限是否存在?创建另一个架构是否有帮助(目前只有一个“公共”架构)?是否有可能有帮助的 OLE 功能?

(请注意,我并不真正关心应用程序是否可以从安全角度访问这些表,我只是想加快该应用程序用户的速度。)

答案1

我认为解决方案围绕这个简单的问题:Windows 系统需要访问的表是否是其他应用程序需要访问的现有系统的一部分?还是仅由 Windows 应用程序使用的单独表?

如果是后者,那么仅包含一个表的新模式确实似乎就是答案。

如果是前者,权限是关键。创建一个 Windows 应用程序将以其身份连接的新用户,然后仅向该用户授予对该一个表的访问权限。请参阅:http://www.postgresql.org/docs/8.4/static/privileges.html

相关内容