我试图删除 PostgreSQL 用户:
DROP USER ryan;
我收到了这个错误:
> Error in query: > ERROR: role "ryan" cannot be dropped because some objects depend on it > DETAIL: privileges for database mydatabase > > ``` 我从这些线程中寻找解决方案: - [PostgreSQL - 如何快速删除具有现有权限的用户](https://stackoverflow.com/questions/3023583/postgresql-how-to-quickly-drop-a-user-with-existing-privileges) - [如果用户有依赖对象,如何在 postgres 中删除用户](https://stackoverflow.com/questions/32988702/how-to-drop-user-in-postgres-if-it-has-depending-objects) 仍然有同样的错误。 这发生在我向用户“ryan”授予所有权限后:
GRANT ALL PRIVILEGES ON DATABASE mydatabase ON SCHEMA public TO ryan;
”`
原文由 notalentgeek 发布,翻译遵循 CC BY-SA 4.0 许可协议
DROP USER
(或DROP ROLE
,同样的事情)无法继续,而角色仍然拥有任何东西或对其他对象具有任何授予的特权。使用
DROP OWNED
摆脱所有特权 (从措辞上看不太明显) 。 手册:所以删除角色的可靠命令序列是:
在角色拥有任何东西或具有任何特权 的同一集群的每个数据库中 运行这两个命令!
最后:
REASSIGN OWNED
更改角色当前拥有的所有对象的所有权。DROP OWNED
然后只撤销特权(所有权不受影响)。或者,您可以跳过
REASSIGN OWNED
。然后DROP OWNED
将(也)删除用户拥有的所有对象。 (你确定吗?!)有关的: