- ベストアンサー
Oracle 10g 他スキーマの参照権限をはずす方法
Oracle 10g 他スキーマの参照権限をはずす方法 ユーザを2個作成したら、ユーザ名と同一のスキーマが2個できました。 デフォルトで他スキーマの参照権限がついているようです。 この権限をはずす事はできますでしょうか。 以下のSQLでははずせませんでした。 REVOKE ALL ON YAMADA.* TO TANALA;
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>ためしに SELECT 文を実行したところ 参照できてしまったのです そうですか。DBの内容やそのSQLが分からないので確認方法として正しいのかはこちらで判断できませんね。 システム権限やロール、個別にオブジェクト権限が付与されていないかを確認してみて、 なぜ参照できているのかの原因をはっきりさせるところからですね。
その他の回答 (3)
- 3rd_001
- ベストアンサー率66% (115/174)
まず、なに経由で権限が与えれているのかを調査すべきです。 個別のオブジェクト権限が与えれれているなら以下で調査します。 select * from dba_tab_privs where grantee = 'TANAKA'; システム権限やロールで与えれている可能性はありますので以下も調査します。 select * from dba_sys_privs where grantee = 'TANAKA'; select * from dba_role_privs where grantee = 'TANAKA'; 何らかの方法で[SELECT ANY TABLES]が与えられている可能性が高い気がします。
- yamada_g
- ベストアンサー率68% (258/374)
>1個1個オブジェクト名を指定するのは大変ですね^^; 工夫すればスクリプトなんてすぐできると思いますが。 たとえばこんなのとか。 select 'revoke '||privilege||' on '||table_name||' from '||grantee||';' from USER_TAB_PRIVS_MADE; そもそも >デフォルトで他スキーマの参照権限がついているようです。 ってどのように確認されたのでしょうか。
補足
ためしに SELECT 文を実行したところ 参照できてしまったのです
- yamada_g
- ベストアンサー率68% (258/374)
>デフォルトで他スキーマの参照権限がついているようです。 というのが良くわかりませんね。DBAロールを付与していたりしませんか? 普通は権限を与えない限りは参照できないような気がしますが・・・ 権限削除のSQLは >REVOKE ALL ON YAMADA.* TO TANALA; ではなく、 REVOKE ALL ON YAMADA.* FROM TANALA; です。 *の部分は実際にはオブジェクト名を入れているんですよね?
補足
ユーザ作成は以下のスクリプトで行いました DBA権限は付与していないと思いますが・・・ CREATE USER TANAKA PROFILE "DEFAULT" IDENTIFIED BY TANAKA DEFAULT TABLESPACE TANAKA TEMPORARY TABLESPACE "TEMP" QUOTA UNLIMITED ON TANAKA ; GRANT CREATE SESSION TO TANAKA ; GRANT "CONNECT" TO TANAKA ; GRANT CREATE PROCEDURE TO TANAKA ; GRANT CREATE SEQUENCE TO TANAKA ; GRANT CREATE TRIGGER TO TANAKA ; GRANT CREATE TABLE TO TANAKA ; GRANT CREATE VIEW TO TANAKA ; ワイルドカード*は指定不可ですか 1個1個オブジェクト名を指定するのは大変ですね^^;
補足
CREATE VIEW CREATE TRIGGER CREATE PROCEDURE CREATE TABLE CREATE SESSION CREATE SEQUENCE ご提示のSQLを実行しましたが 上記の権限しか与えられていませんでした。