2017-01-14 6 views
0

私は、.batファイルを呼び出すplpgsqlを使って手続きを作成しています。この同じ.batファイルは、ファイルとディレクトリ(mkdir、rmdir ...を含む)を操作しますが、これらのコマンドは実行されていません。私はplpgsqlがデータ操作のためだけであることを読んでいたので、これが問題であると推測しています。PostgreSQL:mkdir with plpgsql

この問題を回避するにはどうすればよいですか?この制限を解除したり、新しい言語を使用したりするために、何らかのパラメータを設定することはできますか?

答えて

1

この関数は信頼できない言語で記述する必要があります。 PL/PythonU

For the documentation:

信頼できる言語は、通常のデータベース・ユーザー(スーパーユーザ権限のないもの)のために設計し、それらを安全に関数とトリガプロシージャを作成することができますされています。 PL関数はデータベース・サーバー内で実行されるため、TRUSTEDフラグは、データベース・サーバーの内部またはファイル・システムへのアクセスを許可しない言語に対してのみ指定する必要があります。言語PL/pgSQL、PL/Tcl、およびPL/Perlは信頼できるとみなされます。言語PL/TclU、PL/PerlU、およびPL/PythonUは、無限の機能を提供するように設計されており、信頼できるマークを付けるべきではありません。

+0

私は.batファイルを呼び出しているので、おかげで面白い展望...しかし、あなたの答えはまだ適用されますか? 「セキュリティ」面はplpgsqlではなく、このスクリプトの下にありますか? – Zeruno

+0

plpgsql関数内のファイルシステムに直接アクセスすることは不可能です。そのファイルシステムからbatファイルを実行することはできません。信頼できない言語が必要です。 – klin

+0

@klin:OPが[3時間早く]この質問を投稿したとき(http://stackoverflow.com/questions/41652664/how-to-set-postgresql-to-save-temp-files)、彼らは'COPY FROM 'でそれを打ち切ります。 –

関連する問題