数据库权限的基本配置

时间:2019-03-07 23:33:07

标签: postgresql postgresql-9.6 database-permissions

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

我有两个数据库:

  • 数据库A
  • 数据库B

每个数据库将有几个使用connectionString(服务器,端口,数据库,用户名,密码)连接的用户。因此,每个数据库有3个用户:

  • userA1,userA2,userA3
  • userB1,userB2,userB3

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

这可能是一个简单的问题,但我想看一个示例,该操作-现在我拥有A和B数据库以及postgres用户。

1 个答案:

答案 0 :(得分:0)

试图阻止其他人查看数据库或用户的元数据没有任何意义,请不要尝试。 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,以便允许用户进行身份验证,请参阅文档。