27

ケースを考えてみましょう。データベースに、2人のユーザーAとB、およびそれらに対応するスキーマがあります。

知りたいのですが、情報を取得するにはどうすればよいですか:スキーマBのユーザーAにはどのような権限がありますか。

ケースを考えてみましょう。2人のユーザーとそれに関連するscehmasがあります。ユーザーAとユーザーBがいます。AではTB1TB2があり、BではTBa、TBbがあるとします。ここで、ユーザーAがスキーマBに対してどのような特権を持っているかを知る方法を知りたいと思います。

例:ユーザーAが書き込んでいる:select * from B.TBb これは、ユーザーAがユーザーBのテーブルにアクセスしていることを意味するため、ユーザーAがSELECT特権を持っていることを示しています。ユーザーAがスキーマBに対して持っているすべての特権を知りたい。

ユーザーAがスキーマBに対して持っている特権のリストを取得するために実行されるクエリ。

4

3 に答える 3

35

次のクエリを使用できます。

select * from all_tab_privs;
select * from dba_sys_privs;
select * from dba_role_privs;

これらの各テーブルにはgrantee列があり、where基準でその列をフィルタリングできます。

where grantee = 'A'

私が最初に提案する他のスキーマのオブジェクト(テーブルなど)に対する特権を照会するためall_tab_privsに、列もありtable_schemaます。

クエリを実行する権限を持つ同じユーザーでログインしている場合は、、、を使用user_tab_privsできuser_sys_privsますuser_role_privs。それらは、通常の非dbaユーザーが照会できます。

于 2013-01-30T13:27:56.100 に答える
3

SzilágyiDonátの投稿からの例を使用してください。

私は2つのクエリを使用します。1つは接続許可を除いて、自分が持っている役割を知るためのものです。

SELECT * FROM USER_ROLE_PRIVS WHERE GRANTED_ROLE != 'CONNECT'; -- Roles of the actual Oracle Schema

スキーマ/ユーザーが持っている特権/ロールを見つけたいと思っています。私の役割の例ROLE_VIEW_PAYMENTS&ROLE_OPS_CUSTOMERS。しかし、私が使用した特定の役割のテーブル/オブジェクトを見つけるには、次のようにします。

SELECT * FROM ALL_TAB_PRIVS WHERE GRANTEE='ROLE_OPS_CUSTOMERS'; -- Objects granted at role.

この例の所有者スキーマは、PRD_CUSTOMERS_OWNER(またはロール/スキーマ自体)である可能性があります。

よろしく。

于 2013-10-22T22:22:38.757 に答える
0

データベースにログインします。次に、以下のクエリを実行します

select * from dba_role_privs where grantee ='SCHEMA_NAME';

スキーマに付与されているすべての役割が一覧表示されます。

答えてくれたSzilagyiDonatに感謝します。これは同じものから取られており、where句が追加されています。

于 2016-03-16T21:16:13.500 に答える