从PostgreSQL中移除角色
在Postgres中无法删除一个角色。
postgres=# \\c test_database;
drop role user1;
错误:角色 "user1" 不能删除,因为有对象依赖于它
详细信息:模式public的权限
在模式public中属于角色user1的新序列的默认权限拥有者
在模式public中属于角色user1的新关系的默认权限拥有者
I issue this command:
```sql
SELECT
pg_get_userbyid(defaclrole) AS owner,
nspname AS schema,
defaclobjtype AS type,
defaclacl AS privileges
FROM pg_default_acl a
LEFT JOIN pg_namespace b ON a.defaclnamespace = b.oid
WHERE pg_get_userbyid(defaclrole) = 'user1';
I get:
所有者 | 模式 | 类型 | 权限
------------+--------+------+-----------------------
user1 | public | S | {backup=r/confluence}
user1 | public | r | {backup=r/confluence}
解决方案
You could remove the privileges one by one, but the simple solution is to remove them all with
``` DROP OWNED BY user1;
我建议永远不要直接把任何权限授予你打算删除的角色。在这种情况下,应该使用权限继承。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。