gpt4 book ai didi

postgresql-9.1 - postgres 创建扩展 postgis 错误

转载 作者:行者123 更新时间:2023-12-04 06:47:46 24 4
gpt4 key购买 nike

在创建使用 postgis 扩展名的 postgresql 数据库“map”的过程中,通过 CREATE EXTENSION postgis; ,用户“mapmaker”收到以下错误:

permission denied to create extension "postgis" 
HINT: Must be superuser to create this extension.

但是用户“mapmaker”是 sudo -u postgres psql 指定的数据库所有者通过命令:
CREATE DATABASE map OWNER mapmaker; 
GRANT ALL PRIVILEGES ON DATABASE map TO mapmaker;

一旦 mapmaker 成为用户级别的 super 用户,我就不再收到错误并创建了扩展,所以我明白我所要做的就是通过 postgres 用户将 mapmaker 的权限调整为 super 用户,但我有兴趣知道为什么这是如果 map 制作者被授予对数据库 map 的所有权限?扩展是否有不同的处理方式?为了使用扩展,用户必须是用户级别的 super 用户还是可以在数据库级别分配权限?

我确实看到了 cannot create extension without superuser role但问题的答案并没有解释为什么,不幸的是,我没有足够的观点来评论,因此是这个问题。

PostgreSQL 9.1.9 PostGIS 2.0.3

最佳答案

Packaging Related Objects into an Extension ,文档告诉扩展名有 superuser参数,当设置为 true , 表示只有 super 用户才能安装或升级扩展。

所以这就是PostGIS的情况,大概是因为是用C语言实现的,它对整个集群和数据目录可以做的事情没有限制,而不仅仅是一个数据库。 super 用户拥有对整个集群的权限,而单个数据库的所有者则没有。

正如在 C 语言中创建单个函数需要 super 用户权限一样,出于同样的原因,同样的规则适用于整个 postgis 扩展也是有道理的。

关于postgresql-9.1 - postgres 创建扩展 postgis 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com