當我試圖讓我的數據庫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