gpt4 book ai didi

postgresql - Postgres 将数据库所有者的 GRANT ROLE 授予其他用户,但未按预期执行。我错过了什么?

转载 作者:行者123 更新时间:2023-11-29 12:53:13 24 4
gpt4 key购买 nike

我在这里有点困惑。使用 pg 9.6

CREATE USER user1;
CREATE DATABASE mydb with OWNER user1;
CREATE TABLE x ...;
CREATE USER user2;
GRANT user1 to user2;

user2 身份登录。

INSERT INTO TABLE x ...;
CREATE TABLE z ...;

到这里一切都很好。

user1(数据库所有者)身份登录。

SELECT FROM z; -- fails; table is owned by user2

数据库所有者不应该有权访问所有对象吗?

此外,如果我:

CREATE USER user3;
GRANT user1 /* db owner */ TO user3;

我无法访问由 user2 创建的对象,即使 user3 具有数据库所有者授予的角色。

最佳答案

GRANT有两种形式:对数据库对象的授予和对角色的授予,它们有很大的不同:

9.1 docs for GRANT

语法部分的最后一行是您正在尝试的 GRANT。请注意,授权是针对角色而非用户的,但在 PostgreSQL 中,角色是用户:

"A role can be thought of as either a database user, or a group of database users, depending on how the role is set up".

roles - 9.1 docs

此 serverfault 链接可能有帮助: postgresql-what-does-grant-all-privileges-on-database-do

关于postgresql - Postgres 将数据库所有者的 GRANT ROLE 授予其他用户,但未按预期执行。我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49263843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com