postgresql - 数据库权限的基本配置
问题描述
我正在学习数据库,我有一个问题,如何为以下假设准备规则和组配置:
我有两个数据库:
- 数据库A
- 数据库B
每个数据库将有几个用户使用 connectionString(服务器、端口、数据库、用户名、密码)进行连接。所以我对每个数据库有 3 个用户:
- 用户 A1、用户 A2、用户 A3
- 用户 B1、用户 B2、用户 B3
如何创建组和角色以及如何授予权限,使用户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
权限的组(“nologin 角色”),然后将用户添加到组中。
您必须进行配置pg_hba. conf
,以便允许用户进行身份验证,请参阅文档。
推荐阅读
- ansible - 比较整数值时的ansible
- apache-kafka - Kafka broker 支持多少个分区
- c# - 使用 SDK v4 与 Luis 服务的连接问题
- javascript - 如何从javascript中的字符串中获取最后一个数字
- reactjs - 如何在服务器(SSR)上持久化 redux 用户登录
- mediawiki - 更改 MediaWiki 的默认语言字符串
- javascript - 如何使用 Fetch API 从输入元素提交文件
- android - Android Studio 模拟器在 2018 年 11 月 13 日更新模拟器后不工作
- c# - C# JSON 返回对象
- html - 桌面版 Outlook 365 中带有 HTML 正文的自适应卡片垂直滚动条