数据库权限的基本配置

问题描述 投票:0回答:1

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

我有两个数据库:

  • 数据库
  • 数据库

每个数据库都有几个用户使用connectionString(服务器,端口,数据库,用户名,密码)进行连接。所以每个数据库有3个用户:

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

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

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

postgresql postgresql-9.6 database-permissions
1个回答
0
投票

尝试让其他人看不到数据库或用户的元数据是没有意义的,不要尝试。 PostgreSQL不支持这一点。

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

CREATE ROLE user1a LOGIN;

至于权限,首先必须删除允许每个人连接到数据库的默认权限:

REVOKE CONNECT, TEMP ON DATABASE databasea FROM PUBLIC;

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

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

如果您有许多用户,或者用户经常更改,最好使用具有CONNECTprivilege的组(“nologin角色”),并将用户添加到组中。

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

© www.soinside.com 2019 - 2024. All rights reserved.