public 架构上新用户的默认权限?

Default privileges for new users on public schema?

我刚刚创建了一个带有附加 application 架构的数据库。

对于我们的 Java Spring 引导应用程序,我使用以下 SQL 脚本创建了一个新角色来设置权限:

CREATE USER app_role WITH ENCRYPTED PASSWORD '#########';

GRANT ALL ON SCHEMA application TO app_role;

现在我的期望是,当使用此角色登录时,我只能在模式 application 中创建和删除表。

不过,我也可以在模式 public 中创建和修改表。

public 架构是否有任何默认权限?

为什么我可以在我没有授予任何权限的模式中创建表?

public 模式在 PostgreSQL 中具有特殊作用,如 the documentation 所述。

如果您不希望这样(这可能是一个安全问题),您可以 REVOKE CREATE 权限,甚至可以删除架构。