sql - 如何在 Postgres 中启用对一个模式和公共(public)模式的访问

标签 sql postgresql postgresql-9.1 sql-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 架构对象和数据库用户名?

最佳答案

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

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

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

关于sql - 如何在 Postgres 中启用对一个模式和公共(public)模式的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26550656/

相关文章:

PostgreSQL:结果(使用 JOIN)如何通过网络发送?

java - PostgreSQL 查询在 pgAdmin 中有效,但在 Java EclipseLink 中无效

ruby-on-rails - ruby on rails 无法在本地连接到 postgresql

mysql - mysql中的复杂查询用于按日期生成报告

mysql - 如何正确设置mySQL中的id限制?

sql - 为了更新而更新?

sql - PostgreSQL SELECT 必须跨多行匹配

java - 错误 : relation does not exist

javascript - 如何将sql添加到javaScript函数中?

mysql - SQL 仅选择一项