代码之家  ›  专栏  ›  技术社区  ›  Dan

如何防止用户看到其他数据库和其他数据库中的表?

  •  17
  • Dan  · 技术社区  · 14 年前

    我想创建一个postgres用户,它只能访问postgres服务器上的一个数据库。

    目前我的流程是:

    create database database1;
    create user user1 with password 'pass';
    grant all privileges on database database1 to user1;
    

    但是user1仍然可以看到dbs、用户、表等的列表。有没有办法阻止用户看到这些信息?用户需要能够写入和读取数据库。

    谢谢。

    3 回复  |  直到 10 年前
        1
  •  8
  •   Rdbhost    14 年前

    每个用户都可以看到列出的其他数据库和角色,但永远不能看到其他数据库中的表。

    如果撤消除已分配数据库外的所有数据库的连接权限,则用户将无法访问其他数据库的内容。

    Psql和其他工具一样,假设没有它们,它们将是可用的,并且功能很差。

    姓名 其他数据库和角色都这么糟糕?

        2
  •  2
  •   Sam Coles    14 年前

    默认情况下,您创建的任何对象都是在公共模式中创建的。此外,您创建的任何用户都对公共架构具有创建和使用权限。您应该为此用户撤消对公共架构的创建和使用,或者更改默认访问级别。您还需要将此用户有权访问的数据库移到用户的模式中,或者移到用户可以访问的模式中。看到了吗 DDL Schemas 在Postgres手册中。