当我试图让我的数据库hstore:为什么只有超级用户CREATE EXTENSION hstore,而不是Heroku?
=> CREATE EXTENSION IF NOT EXISTS hstore;
ERROR: permission denied to create extension "hstore"
HINT: Must be superuser to create this extension.
我的用户是不是超级用户,但是数据库的所有者。
加载的扩展需要,将需要创建的组件对象相同的权限。对于大多数扩展,这意味着需要超级用户或数据库所有者权限。谁运行创建扩展的用户成为扩展后的权限检查目的的拥有者,以及通过扩展的脚本创建的任何对象的所有者。
什么hstore这样做需要超级用户权限?它是否影响到我将其添加到数据库之外的部分集群?
而且confundity:
The DB user Heroku Postgres provides is not a superuser:
的Heroku Postgres的用户将被授予对他们的数据库中所有非超级用户的权限。这些措施包括
SELECT
,INSERT
,UPDATE
,DELETE
,TRUNCATE
,REFERENCES
,TRIGGER
,CREATE
,CONNECT
,TEMPORARY
,EXECUTE
和USAGE
。
然而,that user is able to CREATE EXTENSION hstore:
要创建任何支持扩展,打开与Heroku的第一个会话:PSQL并运行相应的命令:
$ heroku pg:psql Pager usage is off. psql (9.2.4) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. ad27m1eao6kqb1=> CREATE EXTENSION hstore; CREATE EXTENSION ad27m1eao6kqb1=>
(对于情况下,我“M试图建立一个Dokku部署,所以相比于Heroku的是特别重要的。)
我想这是因为它需要加载/绑定,只有超级用户被允许做本地库(DLL /左右)。 –
我和你在一起@a_horse_with_no_name,它需要修改服务器的过程,所以认为这就是为什么它需要SU,我通常使用SU,切换到数据库所有者之前加载它作为引导的一部分,但无法找到的文档支持 – Doon
嗯。这很有道理,但看到我对Heroku的补充。在设置使非超级用户成为“CREATE EXTENSION hstore”的DB时,Heroku有没有提前做过? – Peeja