2016-08-17 16 views
1

C言語機能をPostgreSQLデータベースにインポートしようとしています。共有オブジェクト(.so)ファイルに対するアクセス許可が拒否されました。

私のホームディレクトリ内に私の共有オブジェクトがありますが、自分のデータベース上で使用することはできません。

CREATE OR REPLACE FUNCTION add_one(integer) RETURNS integer AS '/home/pedro/.../.../example.so', 'add_one' LANGUAGE C STRICT; 

そして、これが私のエラーメッセージです:

ERROR: could not access file "/home/pedro/.../.../example.so": Permission denied 

私はおそらく、このファイルへのアクセスをブロックし、私のOSであるが、私はすべてのユーザーに許可を与えたくないと思います。

tl; dr:自分のpostgresqlデータベース内で共有オブジェクトファイルとして自分のC言語関数をインポートするための洗練されたソリューションを探しています。

ありがとうございます!

答えて

2

これは、データベースが実行されているユーザーであるため、postgresユーザーに許可を与える必要があります。データベースユーザーに関数を実行する権限を与えることができることに注意してください(デフォルトでは、公開からのアクセスを取り消さない限り、その権限を持つ可能性があります)。

+0

だから私は試しました: 'sudo chown postgres/home/pedro /.../.../ example.so'と' sudo chmod u + rX /home/pedro/.../...// example.so'と動作しませんでした。 実行中: 'ls -l/home/pedro /.../.../ example.so' ' -rwxrwxrwx 1 postgres postgres 12952 Aug 17 17:42 /home/pedro/.../ .../example.so' ユーザー(pedro)と(postgres)のユーザーと試してみました。 –

+0

は、postgresユーザーが読むことができるディレクトリ内のファイルですか? –

+1

私は、postgresのホームディレクトリのどこかに(これらのものはbtwのデータディレクトリの外に)ディレクトリを置くことをお勧めします。 –

関連する問題