【问题标题】:Basic configuration of database permissions数据库权限的基本配置
【发布时间】:2019-03-08 16:59:01
【问题描述】:

我正在学习数据库,我有一个问题,如何为以下假设准备规则和组配置:

我有两个数据库:

  • 数据库A
  • 数据库B

每个数据库将有多个用户使用连接字符串(服务器、端口、数据库、用户名、密码)进行连接。所以我每个数据库有 3 个用户:

  • 用户A1,用户A2,用户A3
  • userB1、userB2、userB3

如何创建组和角色以及如何授予权限,使用户A只能连接到数据库A,用户B只能连接到数据库B。我可以让A用户看不到数据库B,还没有看到分配给数据库B的用户吗?

这可能是一个简单的问题,但我想看一个如何做到这一点的示例 - 现在我有 A 和 B 数据库以及 postgres 用户。

【问题讨论】:

    标签: postgresql postgresql-9.6 database-permissions


    【解决方案1】:

    试图阻止其他人看到数据库或用户的元数据是没有意义的,不要尝试。 PostgreSQL 不支持。

    您创建一个用户(“登录角色”)

    CREATE ROLE user1a LOGIN;
    

    关于权限,首先要去掉允许所有人连接数据库的默认权限:

    REVOKE CONNECT, TEMP ON DATABASE databasea FROM PUBLIC;
    

    然后你必须明确允许所需的用户:

    GRANT CONNECT ON DATABASE databasea TO usera1, usera2, usera3;
    

    如果您有很多用户,或者用户经常更换,最好使用具有CONNECT权限的组(“nologin 角色”),然后将用户添加到组中。

    您必须配置 pg_hba. conf 以便允许用户进行身份验证,请参阅文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-01
      • 2016-09-03
      • 2019-08-21
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 2011-01-20
      • 2013-09-14
      相关资源
      最近更新 更多