无法删除角色,因为即使 REVOKE 语句成功,它的权限也不会被撤销

问题描述 投票:0回答:1

我无法从 postgres 数据库中删除角色。运行 DROP ROLE 语句会输出以下错误:

DROP ROLE read_only;


SQL Error [2BP01]: ERROR: role "read_only" cannot be dropped because some objects depend on it
  Detail: privileges for table orgs.client

当我尝试从表中撤销这些权限时,REVOKE 语句成功(完全没有错误):

REVOKE ALL PRIVILEGES ON TABLE orgs.client FROM read_only;

但是,如果我再次尝试删除该角色,我会收到上面相同的错误。

我不知道为什么 REVOKE 语句没有按预期工作。或者也许它有效,但问题是其他的。关于如何解决此问题有什么想法吗?


\z orgs.client
的输出:

                                                           Access privileges
 Schema |  Name  | Type  |                                Access privileges                                | Column privileges | Policies 
--------+--------+-------+---------------------------------------------------------------------------------+-------------------+----------
 orgs   | client | table | "prisma-beta-gsa@REDACTED"=arwdDxt/"[email protected]"         +|                   | 
        |        |       | REDACTED_dev=arwdDxt/"[email protected]"                       +|                   | 
        |        |       | landlord=a*r*w*d*D*x*t*/"[email protected]"                    +|                   | 
        |        |       | read_only=r/landlord                                                           +|                   | 
        |        |       | read_write=arwd/landlord                                                       +|                   | 
        |        |       | landlord=a*r*w*d*D*x*t*/costa                                                  +|                   | 
        |        |       | landlord=arwdDxt/landlord                                                      +|                   | 
        |        |       | REDACTED_read_only=r/"[email protected]"                       +|                   | 
        |        |       | REDACTED_read_write=arwdD/"[email protected]"                  +|                   | 
        |        |       | REDACTED_admin=arwdDxt/"[email protected]"                      |                   | 


注意:我正在使用托管在 Google Cloud SQL 实例中的 postgres 11。因此,我无法访问超级用户角色。我确实可以访问

postgres
用户,这是最接近超级用户的(docs)。

postgresql
1个回答
1
投票

由于权限是由用户

landlord
授予的,因此您还应该使用该角色来撤销权限:

REVOKE SELECT ON orgs.client FROM read_only;
© www.soinside.com 2019 - 2024. All rights reserved.