私は私のデータベースに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.
は、私のユーザーはスーパーではありませんが、はデータベースの所有者です。 the CREATE EXTENSION docsによると
:
拡張をロードするには、そのコンポーネント・オブジェクトを作成するために必要とされるであろうと同じ権限が必要です。ほとんどの拡張機能では、スーパーユーザー権限またはデータベース所有者権限が必要です。 CREATE 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のの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=>
(、I Dokkuのデプロイメントをセットアップしようとしているので、Herokuとの比較が特に重要です。
スーパーユーザーだけが許可するネイティブライブラリ(dll/so)をロード/バインドする必要があるからです。 –
私は@a_horse_with_no_nameと一緒にいるので、サーバプロセスを変更する必要があるので、SUを必要とすると思うので、通常はSUを使用してブートストラップの一部として読み込み、DB所有者に切り替える前にサポートするドキュメントは見つかりません – Doon
Hmm 。それは理にかなっていますが、Herokuについての私の追加を見てください。非スーパーユーザのために 'CREATE EXTENSION hstore'を可能にするDBをセットアップしている間に、Herokuが事前に何かしていますか? – Peeja