首页 > 解决方案 > 授予用户对 Postgres 集群中所有数据库的访问权限

问题描述

我只看到过 SQL 语句的示例,它允许用户一次访问 Postgres 集群中的一个数据库。有没有办法授予非超级用户对所有数据库及其表的访问权限,包括在集群中创建的未来数据库?

标签: sqlpostgresql

解决方案


从 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 之前,您必须单独授予对所有对象的访问权限。组角色对此有所帮助。


推荐阅读