我正在学习数据库,我有一个问题,如何为以下假设准备规则和组配置:
我有两个数据库:
每个数据库都有几个用户使用connectionString(服务器,端口,数据库,用户名,密码)进行连接。所以每个数据库有3个用户:
如何创建组和角色以及如何授予权限,以便用户A只能连接到数据库A,用户B只能连接到数据库B.我可以让A用户看不到数据库B,还没有看到用户分配给数据库B?
可能这是一个简单的问题,但我想看一个如何做的例子 - 现在我有A和B数据库以及postgres
用户。
尝试让其他人看不到数据库或用户的元数据是没有意义的,不要尝试。 PostgreSQL不支持这一点。
您使用创建用户(“登录角色”)
CREATE ROLE user1a LOGIN;
至于权限,首先必须删除允许每个人连接到数据库的默认权限:
REVOKE CONNECT, TEMP ON DATABASE databasea FROM PUBLIC;
然后,您必须明确允许所需的用户:
GRANT CONNECT ON DATABASE databasea TO usera1, usera2, usera3;
如果您有许多用户,或者用户经常更改,最好使用具有CONNECT
privilege的组(“nologin角色”),并将用户添加到组中。
您必须配置pg_hba. conf
以便允许用户进行身份验证,请参阅文档。