加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 16:02:21 所属栏目:百科 来源:网络整理
导读:在使用postgis扩展创建 postgresql数据库“map”的过程中,通过CREATE EXTENSION postgis;,用户“mapmaker”会收到以下错误: permission denied to create extension "postgis" HINT: Must be superuser to create this extension. 但是用户“mapmaker”是su
在使用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成为用户级别的超级用户,我就不再收到错误,并且创建扩展名,所以我理解我所要做的就是通过postgres用户将mapmaker的权限调整为超级用户,但我有兴趣知道为什么这是如果mapmaker被授予数据库映射的所有权限?扩展是否区别对待?为了使用扩展,用户必须是用户级超级用户,还是可以在数据库级别分配权限?

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

PostgreSQL 9.1.9 PostGIS 2.0.3

解决方法

在 Packaging Related Objects into an Extension中,doc告诉扩展具有超级用户参数,当设置为true时,表示只有超级用户可以安装或升级扩展.

这就是PostGIS的情况,大概是因为它是用C语言实现的,它对整个集群和数据目录的作用没有限制,而不仅仅是一个数据库.超级用户拥有整个群集的权限,单个数据库的所有者没有该权限.

正如需要超级用户权限来在C语言中创建单个函数一样,出于同样的原因,同样的规则也适用于整个postgis扩展.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读