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 架构对象和数据库用户名?
最佳答案
这可不容易。在默认安装中,列出所有对象的系统目录对同一数据库的所有用户可见(有些对同一数据库集群的所有用户可见),这是正常操作所必需的。
如果您想隐藏对象的存在,您需要单独的数据库(甚至单独的数据库集群)。
如果您有很多公共(public)对象,另一种方法是让用户连接到单独的数据库(集群)并通过 dblink 或外部数据包装器(以管理员用户的权限运行)访问选定的对象。
关于sql - 如何在 Postgres 中启用对一个模式和公共(public)模式的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26550656/