天天看點

新增使用者查詢目前使用者所有表

今天在bbs上看到一位網友提出:新增使用者隻能查詢目前使用者所有表,于是簡單地測試了一下:

SQL> create user aaa identified by bbb;

使用者已建立。

SQL> grant select any table to aaa;

授權成功。

SQL> grant connect to aaa;

授權成功。

SQL> conn aaa/bbb

已連接配接。

SQL> select * from t1;

select * from t1

              *

第 1 行出現錯誤:

ORA-00942: 表或視圖不存在

SQL> select * from system.t1;

TABLE_NAME                     STATUS

------------------------------ --------

MVIEW$_ADV_WORKLOAD            VALID

MVIEW$_ADV_BASETABLE           VALID

MVIEW$_ADV_SQLDEPEND           VALID

MVIEW$_ADV_PRETTY              VALID

MVIEW$_ADV_TEMP                VALID

MVIEW$_ADV_FILTER              VALID

MVIEW$_ADV_LOG                 VALID

MVIEW$_ADV_FILTERINSTANCE      VALID

MVIEW$_ADV_LEVEL               VALID

MVIEW$_ADV_ROLLUP              VALID

MVIEW$_ADV_WORKLOAD            VALID

TABLE_NAME                     STATUS

------------------------------ --------

MVIEW$_ADV_BASETABLE           VALID

MVIEW$_ADV_SQLDEPEND           VALID

MVIEW$_ADV_PRETTY              VALID

MVIEW$_ADV_TEMP                VALID

MVIEW$_ADV_FILTER              VALID

MVIEW$_ADV_LOG                 VALID

MVIEW$_ADV_FILTERINSTANCE      VALID

MVIEW$_ADV_LEVEL               VALID

MVIEW$_ADV_ROLLUP              VALID

已選擇20行。

SQL> conn system/bbb

已連接配接。

SQL> revoke select any table from aaa;

撤銷成功。

SQL> conn aaa/bbb

已連接配接。

SQL> select * from system.t1;

select * from system.t1

                     *

第 1 行出現錯誤:

ORA-00942: 表或視圖不存在

SQL> select * from system.t1;

select * from system.t1

                     *

第 1 行出現錯誤:

ORA-00942: 表或視圖不存在

SQL> select * from session_privs;

PRIVILEGE

----------------------------------------

CREATE SESSION

SQL>

    結論:grant select any table to user 可以實作隻查詢目前使用者所有表,但是在查詢時,一定要在表名前加上該表的所有者。

繼續閱讀