私は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
と私のユーザー名のデータベースを作成しました。
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
を一般ユーザー向けに使用できるようにワークフローを修正する方法を説明できる人がいますか?
あなたはスーパーユーザで他のユーザのための設定をしていると思いますので、私はPGDATA /var/lib/postgresql/9.5/mainの権限を調べます。これはおそらくpostgres:postgresあなたが他のユーザをpostgresのゾーンに入れたいのか、テンプレート:PGDATAをuser:userに設定されたパーミッションを持つ各ユーザのファイルの場所に変更するのかを尋ねます。 PL/Rの問題そのものではありません。 – Chris
@chris私はデータベースsuです。私は問題なくpostgisのような他の拡張機能に同じワークフローを使用しました。私はここで何が違うのか分からない。 – tinlyx
あなたが何かをしようとするまで、すべては大丈夫です。 Selectは、基礎となるファイルを変更するようなことを確実にしています。一方、拡張機能の作成は、特定のデータベース内で達成される可能性のある機能についてのみ話しています。しかし、とにかくPGDATAのパスは誰もが何でもできるファイルにつながっていると言っています。許可が拒否されているのは、これは事実ではなく、postgresまたはrootのいずれもそれを持っていないことを示唆しています。あなたのテンプレートには何がありますか? – Chris