Dan*_*Cat 5 postgis postgresql-9.1
在创建使用postgis扩展名的postgresql数据库"map"的过程中CREATE EXTENSION postgis;,用户"mapmaker"会收到以下错误:
permission denied to create extension "postgis"
HINT: Must be superuser to create this extension.
Run Code Online (Sandbox Code Playgroud)
但是用户"mapmaker"是sudo -u postgres psql通过命令指定的数据库所有者:
CREATE DATABASE map OWNER mapmaker;
GRANT ALL PRIVILEGES ON DATABASE map TO mapmaker;
Run Code Online (Sandbox Code Playgroud)
一旦mapmaker成为用户级别的超级用户,我就不再收到错误,并且创建扩展名,所以我理解我所要做的就是通过postgres用户将mapmaker的权限调整为超级用户,但我有兴趣知道为什么这是如果mapmaker被授予数据库映射的所有权限?扩展是否区别对待?为了使用扩展,用户必须是用户级超级用户,还是可以在数据库级别分配权限?
我确实看到没有超级用户角色就无法创建扩展,但问题的答案并没有解释为什么,不幸的是,我没有足够的评论点,因此问题.
PostgreSQL 9.1.9 PostGIS 2.0.3
在将 相关对象打包到扩展中时,doc告诉扩展有一个superuser参数,当设置true为时,表示只有超级用户可以安装或升级扩展.
这就是PostGIS的情况,大概是因为它是用C语言实现的,它对整个集群和数据目录的作用没有限制,而不仅仅是一个数据库.超级用户拥有整个群集的权限,单个数据库的所有者没有该权限.
正如需要超级用户权限来在C语言中创建单个函数一样,出于同样的原因,同样的规则也适用于整个postgis扩展.
| 归档时间: |
|
| 查看次数: |
4101 次 |
| 最近记录: |