微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在使用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扩展.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐