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架构对象和数据库用户名?
答案 0 :(得分:3)
这不容易。在默认安装中,列出所有对象的系统目录对同一数据库的所有用户(以及同一数据库集群的所有用户)都是可见的,这是正常操作所必需的。
如果您想隐藏对象的存在,则需要单独的数据库(或者甚至是单独的数据库群集)。
如果你有很多共同的对象,另一种方法是让用户连接到一个单独的数据库(集群),并通过dblink或外部数据包装器(以管理员用户的权限运行)访问所选对象。