PostgreSQL 授予对表的访问权限

Posted

技术标签:

【中文标题】PostgreSQL 授予对表的访问权限【英文标题】:PostgreSQL grant access to table 【发布时间】:2021-07-13 10:26:10 【问题描述】:

我在 PostgreSQL 中有 user1 和 user2 用户。我在 PostgreSQL 中创建了一个数据库和一个名为 data 的方案。

在数据库中,我执行了以下语句:

ALTER DEFAULT PRIVILEGES IN SCHEMA data GRANT ALL ON TABLES TO user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA data GRANT ALL ON TABLES TO user2;

我以 user1 身份登录并在数据架构中创建了表,然后我以 user2 身份登录,但无法使用 user2 凭据从 table1 中选择 *。

有什么方法可以创建表(未来)并授予用户 1 和用户 2 的访问权限,而不仅仅是表的所有者?

我目前使用的是 PostgreSQL 13。

【问题讨论】:

您在运行这些 ALTER 语句时使用了哪个用户登录? @a_horse_with_no_name 我以 postgres 用户身份登录以执行 ALTER 语句。 【参考方案1】:

您编写ALTER DEFAULT PRIVILEGES 语句的方式,适用于运行该语句的用户创建的表

要更改user1 创建的表的默认权限,请运行

ALTER DEFAULT PRIVILEGES FOR ROLE user1 IN SCHEMA data GRANT ALL ON TABLES TO user2;

【讨论】:

感谢 Laurenz 提供的信息。但是如果我有一个用户/角色列表,我可以问我该怎么做吗? 如果所有这些用户都创建表,您需要大量的ALTER DEFAULT PRIVILEGES 语句。没有办法解决这个问题。尝试自动化。 我明白了。感谢您的信息!感谢您的帮助!【参考方案2】:

您可能需要在 select * from **data.**table1 使用 user2 凭据之前指定架构。

【讨论】:

以上是关于PostgreSQL 授予对表的访问权限的主要内容,如果未能解决你的问题,请参考以下文章

Postgres:为不同角色/用户创建的未来表授予对角色/用户的访问权限

撤销 PostgreSQL 用户的访问权限以查看其他表

授予对 Postgres 中所有表的访问权限

ORACLE把一个用户下的所有表权限赋予另一个用户?

授予对 PostgreSQL 中未来表的权限?

如何授予对 DynamoDB 表的访问权限?