首页 > 解决方案 > 默认撤销对新数据库的 CONNECT 权限

问题描述

这发生在 GCP 的 Cloud SQL 上新创建的 Postgres 13 实例上。

我想禁止用户连接到新创建的数据库。所以我正在修改模板数据库:

REVOKE ALL ON DATABASE template1 FROM public;

然后,我创建新数据库:

CREATE DATABASE mydb TEMPLATE template1;

然后我正在检查现有用户的 CONNECT 权限:

SELECT datname
FROM pg_database
WHERE has_database_privilege('someuser', datname, 'CONNECT')

    datname
---------------
 cloudsqladmin
 postgres
 template0
 mydb

所以你可以看到someuserCONNECT权限mydb

为什么会这样?如何防止用户连接到新创建的数据库?

标签: postgresqldatabase-administration

解决方案


在. _ _ CREATE DATABASE相反,所有新数据库都具有相同的默认权限:CONNECTTEMPfor PUBLIC,以及所有者的所有权限。

除了修改 PostgreSQL 代码之外,没有办法更改该默认值。


推荐阅读