postgresql - 默认撤销对新数据库的 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
所以你可以看到someuser
有CONNECT
权限mydb
。
为什么会这样?如何防止用户连接到新创建的数据库?
解决方案
在. _ _ CREATE DATABASE
相反,所有新数据库都具有相同的默认权限:CONNECT
和TEMP
for PUBLIC
,以及所有者的所有权限。
除了修改 PostgreSQL 代码之外,没有办法更改该默认值。
推荐阅读
- amazon-web-services - 如何在 AWS ALB 前将 NGINX 配置为反向代理
- vba - 如何根据单元格内容使用 RGB 颜色对 Word 单元格应用条件格式
- css - 使用 R Shiny 调整 tabPanel 标题的宽度
- javascript - 为什么表格列表中有缩进?
- python - 熊猫 ewm var 和 std
- node.js - 多个异步数据发送的正确方法是什么?
- scheme - 如何修改我的代码以仅添加偶数?
- html - 默认 Css 覆盖所有新的类/div
- c - 如何将 lua 打印重定向到新的或现有的控制台窗口?
- r - R:如何将 double 转换为 raw 并返回?