当我尝试在我的数据库上启用hstore时:
=> CREATE EXTENSION IF NOT EXISTS hstore;
ERROR: permission denied to create extension "hstore"
HINT: Must be superuser to create this extension.
我的用户不是超级用户,但是是数据库的所有者。
加载扩展需要与创建其组件对象所需的相同特权。对于大多数扩展来说,这意味着需要超级用户或数据库所有者权限。运行CREATE EXTENSION命令的用户在稍后进行特权检查时成为扩展的所有者,以及扩展脚本创建的任何对象的所有者。
hstore做了什么需要超级用户权限?它是否影响添加到其中的数据库之外的集群的某些部分?
更进一步混淆:
Heroku Postgres用户被授予其数据库上的所有非超级用户权限。这些包括SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE和USAGE。
然而,那个用户能够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的比较尤为重要。)
(为背景信息,我正试图设置一个Dokku 部署,所以与Heroku的比较尤其重要。)