当我try 在数据库上启用hstore时:
=> CREATE EXTENSION IF NOT EXISTS hstore;
ERROR: permission denied to create extension "hstore"
HINT: Must be superuser to create this extension.
我的用户不是超级用户,而是数据库的所有者.
加载扩展需要与创建其组件对象相同的权限.对于大多数扩展,这意味着需要超级用户或数据库所有者权限.运行"创建扩展"的用户将成为该扩展的所有者,用于以后的权限判断,以及由该扩展的脚本创建的任何对象的所有者.
hstore在做什么需要超级用户权限?它是否会影响我添加到的数据库之外的集群部分?
进一步混淆:
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 pg: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=>
(在上下文中,我试图设置一个Dokku部署,因此与Heroku的比较尤其重要.)