Si te encuentras con algo que no comprendes puedes dejarlo en la sección de comentarios y te responderemos tan rápido como podamos.
Solución:
DROP USER
(o DROP ROLE
lo mismo) no puede continuar mientras el rol aún posee algo o tiene privilegios otorgados en otros objetos.
Deshágase de todos los privilegios con DROP OWNED
(que no es demasiado obvio por la redacción). El manual:
[…] También se revocarán todos los privilegios otorgados a los roles dados en los objetos de la base de datos actual y en los objetos compartidos (bases de datos, espacios de tablas).
Entonces, la secuencia confiable de comandos para abandonar un rol es:
REASSIGN OWNED BY ryan TO postgres; -- or some other trusted role
DROP OWNED BY ryan;
-- repeat both in ALL databases where the role owns anything or has any privileges!
DROP USER ryan;
REASSIGN OWNED
cambia la propiedad de todos los objetos que actualmente pertenecen al rol.DROP OWNED
entonces solo revoca privilegios (propiedades fuera del camino).
Alternativamente, puede omitir REASSIGN OWNED
para en su lugar soltar todos los objetos propiedad del usuario. (¡¿Está seguro?!)
Relacionado:
- Eliminar un rol con privilegios (con una función para generar comandos para todos los DB relevantes)
- Encuentre objetos vinculados a un rol de PostgreSQL
Lo que funcionó para mí fue 1) Conectarse a la base de datos
c mydatabase
2) Reasignación de propiedad
REASSIGN OWNED BY ryan TO ;
O/y simplemente eliminando el objeto
DROP OWNED BY ryan;
3) Ejecutando REVOKE PRIVILEGES
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM ryan;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM ryan;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM ryan;
4) Dejar caer al usuario
DROP USER ryan;
PD: Es posible que no necesite ejecutar los pasos 2 y 3, solo uno de los dos pasos suele ser suficiente.