Принятый ответ привел к ошибкам для меня при попытке РЕАССИРОВАНИЯ OWNED BY или DROP OWNED BY.У меня сработало следующее:
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM username;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM username;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM username;
DROP USER username;
Пользователь может иметь привилегии в других схемах, в этом случае вам придется запустить соответствующую строку REVOKE с заменой «public» на правильную схему.Чтобы показать все схемы и типы привилегий для пользователя, я отредактировал команду \ dp, чтобы выполнить этот запрос:
SELECT
n.nspname as "Schema",
CASE c.relkind
WHEN 'r' THEN 'table'
WHEN 'v' THEN 'view'
WHEN 'm' THEN 'materialized view'
WHEN 'S' THEN 'sequence'
WHEN 'f' THEN 'foreign table'
END as "Type"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.array_to_string(c.relacl, E'\n') LIKE '%username%';
Я не уверен, какие типы привилегий соответствуют отмене в TABLES, SEQUENCES илиФУНКЦИИ, но я думаю, что все они подпадают под одну из трех.