当前位置: 代码迷 >> Oracle管理 >> 关于select any table 意思
  详细解决方案

关于select any table 意思

热度:760   发布时间:2016-04-24 04:11:37.0
关于select any table 意义
oracle数据库我新建了一个用户,只赋予这个用户connect的权限,没有赋予select any table的权限,但是我发现登陆这个用户之后仍然可以查询其他用户的表,如select * from nrsdb.tfp_info;
那么select any table这个权限 赋予与否有什么区别吗?? 没搞明白 请大神指点
------解决思路----------------------
引用:

查看一下用户当前拥有的权限就一目了然了:


select privilege
  from dba_sys_privs
 where grantee = 'username'
union
select privilege
  from dba_sys_privs
 where grantee in
       (select granted_role from dba_role_privs where grantee = 'username');

------解决思路----------------------
11g中connect角色只具有CREATE SESSION的权限
10g r2之前connect角色具有权限,无论是11g还是10g中的connect角色都没有权限去查询别的用的表
CREATE SESSION
CREATE TABLE  
CREATE VIEW  
CREATE SYNONYM  
CREATE CLUSTER  
CREATE DATABASE LINK  
CREATE SEQUENCE  
ALTER SESSION 
11g中:
SQL>  select * from role_sys_privs where role='CONNECT';

ROLE                           PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
CONNECT                        CREATE SESSION                           NO
所以赋予connect角色是不能访问其他用的表的

你可以查看用户下具有的系统权限
SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION

在查看用户下具有的对象权限来看用户是否对其他用户的表有select权限
SQL>   select * from user_tab_privs;

GRANTEE                        OWNER
------------------------------ ------------------------------
TABLE_NAME                     GRANTOR
------------------------------ ------------------------------
PRIVILEGE                                GRA HIE
---------------------------------------- --- ---
U3                             U1
TAB1                           U1
SELECT                                   NO  NO


------解决思路----------------------
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 11月 6 09:50:09 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn /as sysdba
已连接。
SQL> set linesize 2000
SQL> drop user test purge;
drop user test purge
               *
第 1 行出现错误:
ORA-00921: 意外的 SQL 命令结尾


SQL> drop user test cascade;

用户已删除。

SQL> create user test identified by test;

用户已创建。

SQL> grant connect to test;

授权成功。

SQL> conn test/test
已连接。
SQL> select * from scott.emp;
select * from scott.emp
                    *
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> conn scott/tiger
已连接。
SQL> select * from scott.emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80            800          1         20
  相关解决方案