Postgresql

無法在 PostgreSQL 12.4 中刪除使用者

  • March 10, 2022

我無法刪除使用者,因為我收到預設權限錯誤。

postgres=# drop user xyz;
ERROR: role "xyz" cannot be dropped because some objects depend on it
DETAIL: owner of default privileges on new functions belonging to role xyz

然後我檢查了數據庫中的預設權限,

postgres=# \ddp
Default access privileges
Owner | Schema | Type     | Access privileges
---- -+------- +----------+-------
xyz   |        | function |

你能告訴我如何撤銷這個預設權限嗎?

您必須授予“預設”預設權限:

ALTER DEFAULT PRIVILEGES FOR ROLE xyz GRANT EXECUTE ON FUNCTIONS TO PUBLIC;
ALTER DEFAULT PRIVILEGES FOR ROLE xyz GRANT EXECUTE ON FUNCTIONS TO xyz;

然後你應該能夠放棄這個角色。

這是刪除角色的安全命令序列:

在數據庫集群的每個相關數據庫中執行。

REASSIGN OWNED BY xyz TO postgres;
DROP OWNED BY xyz;

DROP OWNED也擺脫了所有特權和預設特權!

最後:

DROP ROLE xyz;

更詳細的解釋:

引用自:https://dba.stackexchange.com/questions/308478