我无法从 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)。
由于权限是由用户
landlord
授予的,因此您还应该使用该角色来撤销权限:
REVOKE SELECT ON orgs.client FROM read_only;