2016-10-27 6 views
0

PostgreSQL 9.5.4でコマンドALTER DEFAULT PRIVILEGES...を使用してデフォルトの特権を設定しようとしています。これはパーミッションを付与しようとしているときに機能しますが、デフォルトでは関数からの実行パーミッションを取り消す方法がわかりません。私が試してみました:デフォルトでPostgreSQLの関数に対する特権を実行する方法

ALTER DEFAULT PRIVILEGES FOR USER myAdmin IN SCHEMA public 
    REVOKE EXECUTE ON FUNCTIONS FROM public; 

これは\ddpの出力に影響を与えないように見えます。特権が与えられていない限り、所有者以外のユーザーが機能を実行できないようにする方法はありますか?ありがとう。

+0

どのような役割(複数可)に属してpublic'のでしょうか? – Nicarus

+0

@Nicarus私はPostgreSQLの役割をかなり新しくしているので、あなたの質問を理解できません。私は同じコマンドを試しましたが、最後の 'public'識別子を特定のユーザの名前に置き換えました。これは '\ ddp'の出力にも影響しません。 –

+0

これを実行します: 'SELECT * FROM pg_roles WHERE rolename = 'public';'あなたはprivを見ることができるはずです。その役割の役割一例として、スーパーユーザーの役割があるため、privsを変更することは影響を与えません。 – Nicarus

答えて

3

あなたはALTER DEFAULT PRIVILEGESIN SCHEMAを指定した場合、あなただけの付与許可をすることができますが、にそれらを取り消すありません。

The documentationは言う:スキーマごとの指定され

デフォルトの権限は、グローバルなデフォルトの権限は、特定のオブジェクトタイプのためにあるものは何でもに追加されます。

したがって、あなたがあなたのコマンドを変更することにより、グローバルなデフォルトの権限から取り消す必要があります: `現在

ALTER DEFAULT PRIVILEGES FOR USER myAdmin 
    REVOKE EXECUTE ON FUNCTIONS FROM public; 
関連する問題