Postgres9.1数据库包含public、firma1和firma6以及其他模式。
如何仅允许特定用户访问公共架构和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;
如果resisteduser从pgadmin登录到数据库,它仍然可以看到所有其他用户名和firma1表列表(它不能只看到firma1表内容)
如何修复此问题,以便用户无法看到firma1架构对象和数据库用户名?
最佳答案
这不容易。在默认安装中,列出所有对象的系统目录对同一数据库的所有用户(以及同一数据库群集的所有用户)都可见,这是正常操作所必需的。
如果你想隐藏对象的存在,就需要单独的数据库(或者甚至是单独的数据库集群)。
如果有很多公共对象,另一种方法是让用户连接到单独的数据库(集群)并通过dblink或外部数据包装器(以管理员用户的权限运行)访问选定的对象。