2016-04-15 3 views
0

私はPostgreSQL(9.5)用のPL/Rを学習/テストしており、インストールをSELECT * FROM plr_environ();で確認しようとしました。しかし、これはpgのスーパーユーザーだけで動作し、通常のpgユーザーは動作しません。私が何をしたかPostgreSQLの通常のユーザにPL/Rを有効にする方法

されました:

1.IテンプレートデータベースにpostgresとしてCREATE EXTENSION plr;をしたし、その後createdb -T my_template my_userと私のユーザー名のデータベースを作成しました。

テンプレートDB上での使用 psql -U postgres 2.Ifは

、私は得ることができます:私はテンプレートから作成された新しいデシベルでこれを行う場合

postgres=# SELECT * FROM plr_environ(); 
     name  |   value    
--------------------+------------------------------ 
PG_OOM_ADJUST_FILE | /proc/self/oom_score_adj 
PG_GRANDPARENT_PID | 499 
PGLOCALEDIR  | /usr/share/locale 
PGSYSCONFDIR  | /etc/postgresql-common 
LANG    | en_US.UTF-8 
PWD    | /var/lib/postgresql 
PGDATA    | /var/lib/postgresql/9.5/main 
LC_COLLATE   | en_US.UTF-8 
LC_CTYPE   | en_US.UTF-8 
LC_MESSAGES  | en_US.UTF-8 
LC_MONETARY  | C 
LC_NUMERIC   | C 
LC_TIME   | C 

をしかし、私はエラーを得た:

=> SELECT * FROM plr_environ(); 
ERROR: permission denied for function plr_environ 

PL/Rを一般ユーザー向けに使用できるようにワークフローを修正する方法を説明できる人がいますか?

+0

あなたはスーパーユーザで他のユーザのための設定をしていると思いますので、私はPGDATA /var/lib/postgresql/9.5/mainの権限を調べます。これはおそらくpostgres:postgresあなたが他のユーザをpostgresのゾーンに入れたいのか、テンプレート:PGDATAをuser:userに設定されたパーミッションを持つ各ユーザのファイルの場所に変更するのかを尋ねます。 PL/Rの問題そのものではありません。 – Chris

+0

@chris私はデータベースsuです。私は問題なくpostgisのような他の拡張機能に同じワークフローを使用しました。私はここで何が違うのか分からない。 – tinlyx

+0

あなたが何かをしようとするまで、すべては大丈夫です。 Selectは、基礎となるファイルを変更するようなことを確実にしています。一方、拡張機能の作成は、特定のデータベース内で達成される可能性のある機能についてのみ話しています。しかし、とにかくPGDATAのパスは誰もが何でもできるファイルにつながっていると言っています。許可が拒否されているのは、これは事実ではなく、postgresまたはrootのいずれもそれを持っていないことを示唆しています。あなたのテンプレートには何がありますか? – Chris

答えて

0

最も近いものはthis blogです。 スーパーユーザーのみがPL/R機能を実行できるようです。

To execute plr functions is mandatory that the user be a superuser, because this language is considered unreliable at this moment. ...

The solution is alter user rights to this condition.

現在、スーパーユーザー以外のユーザーはPL/R機能を使用できないようです。

関連する問題