sql - 授予用户对 Postgres 集群中所有数据库的访问权限
问题描述
我只看到过 SQL 语句的示例,它允许用户一次访问 Postgres 集群中的一个数据库。有没有办法授予非超级用户对所有数据库及其表的访问权限,包括在集群中创建的未来数据库?
解决方案
从 PostgreSQL v14 开始,这相当容易,您可以使用以下 SQL 脚本:
-- exempt the user from row level security
ALTER ROLE seeall BYPASSRLS;
-- allow the user to read all data
GRANT read_all_data TO seeall;
如果您还想要写访问权限,还有一个预定义的角色pg_write_all_data
。
这依赖于这样一个事实,即默认情况下,每个人都CONNECT
对数据库具有特权。当然,您还必须配置pg_hba.conf
为允许访问。
如果您想知道:不,在 v14 之前,您必须单独授予对所有对象的访问权限。组角色对此有所帮助。
推荐阅读
- python-3.x - 一种热编码:ValueError:无法将字符串转换为浮点数:“是”
- spring-integration - int-jdbc:inbound-channel-adapter channel depth
- haskell - Why do these two functions have a different type?
- abap - WHERE 子句中的 OpenSQL 偏移量
- ruby - foodcritic (3.0.3) gem 安装在 Mac OS High Sierra 中失败
- java - UJMP 输出未正确显示
- firebase - Firebase Cloud Functions - Change Firestore settings
- c - C - Struct- 指向没有强制转换的指针的整数
- servlets - request.getServletContext().getRealPath() 在 jsp servlet 中返回 null
- java - Oracle BI 报表服务返回 0 大小字节数组