1

データベース ユーザーの権限を取り消そうとしていますが、権限を付与したユーザーのみが権限を取り消すことができるようです。この問題について議論しているスレッドがここにあります。 http://archives.postgresql.org/pgsql-bugs/2007-05/msg00234.php

このスレッドは 2007 年にさかのぼりますが、これがバグと見なされているのか、私が使用している PostgreSQL 8.4 にその問題がまだ存在するのかどうかはよくわかりません。

その情報を表示できるクエリまたはビューはありますか? そうすれば、それを使用set session authorizationして取り消すことができます。

4

1 に答える 1

2

PostgreSQL 8.4 は古くなっています。詳細については、バージョン管理ポリシーを確認してください。しかし、これは SQL の標準的な動作であるため (提供されたリンクされたディスカッションで Tom Lane が述べているように)、変更されている可能性は低いです。

特権は、それぞれのオブジェクトとともにシステム カタログに格納されます。たとえば、テーブルの場合:

SELECT n.nspname, c.relname, c.relacl
FROM   pg_catalog.pg_class c
JOIN   pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE  c.oid = 'myschema.mytbl'::regclass  -- your tablename here

次のようなものが生成されます。

 nspname  | relname |                  relacl
----------+---------+---------------------------------------------
 myschema | mytbl   | {postgres=arwdDxt/postgres,fuser=r/fadmin}

スラッシュの後のロール名は付与者です。fadminユーザー(または任意のスーパーユーザー)として取り消すには:

REVOKE SELECT ON TABLE myschema.mytbl FROM fuser;

*acl他のシステム テーブルにも同様の列があります。pg_namespaceスキーマなどについては、マニュアルのシステム テーブルのリストを参照してください。


より簡単な方法は、pgAdminを使用して左側のオブジェクト ブラウザでオブジェクトを選択することです。ACL が右上のプロパティ ペインに表示されます。

于 2012-06-24T02:06:43.067 に答える