如何在默认情况下撤销 PostgreSQL 中函数的执行权限

How to Revoke Execute Privileges on Functions in PostgreSQL by Default

我正在尝试使用命令 ALTER DEFAULT PRIVILEGES... 在 PostgreSQL 9.5.4 中设置默认权限。这在尝试授予权限时有效,但我不知道如何默认撤销函数的执行权限。我试过:

ALTER DEFAULT PRIVILEGES FOR USER myAdmin IN SCHEMA public
    REVOKE EXECUTE ON FUNCTIONS FROM public;

这似乎对 \ddp 的输出没有影响。有没有办法防止功能被所有者以外的用户执行,除非另有授权?谢谢

如果用ALTER DEFAULT PRIVILEGES指定IN SCHEMA,则只能授予权限,不能撤销权限.

The documentation 说:

Default privileges that are specified per-schema are added to whatever the global default privileges are for the particular object type.

因此,您必须通过将命令更改为:

来撤销全局默认权限
ALTER DEFAULT PRIVILEGES FOR USER myAdmin
    REVOKE EXECUTE ON FUNCTIONS FROM public;