您的位置:首页 > 其它

新增用户查询当前用户所有表

2010-09-09 20:17 211 查看
今天在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 可以实现只查询当前用户所有表,但是在查询时,一定要在表名前加上该表的所有者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: