如何在Postgres中启用对一个架构和公共架构的访问

时间:2014-10-24 15:01:15

标签: sql postgresql postgresql-9.1 grant

Postgres 9.1数据库包含public,firma1和firma6以及其他模式。

如何仅允许特定用户访问public和firma6架构。

我试过

revoke all on schema firma1 from public;
revoke all on all tables in schema firma1 from public cascade;

GRANT ALL ON SCHEMA public TO restristeduser;
GRANT ALL ON SCHEMA firma6 TO restristeduser;

如果restristeduser从pgadmin登录到数据库,它仍会看到所有其他用户名和firma1表列表(它只能看到firma1表内容)

如何修复此问题,以便用户无法看到firma1架构对象和数据库用户名?

1 个答案:

答案 0 :(得分:3)

这不容易。在默认安装中,列出所有对象的系统目录对同一数据库的所有用户(以及同一数据库集群的所有用户)都是可见的,这是正常操作所必需的。

如果您想隐藏对象的存在,则需要单独的数据库(或者甚至是单独的数据库群集)。

如果你有很多共同的对象,另一种方法是让用户连接到一个单独的数据库(集群),并通过dblink或外部数据包装器(以管理员用户的权限运行)访问所选对象。