查看一下用户当前拥有的权限就一目了然了: 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');
查看一下用户当前拥有的权限就一目了然了: 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 2014Copyright (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
给这个用户赋了别的角色了吧,那些角色可能有 select any table 权限。
我被plsql给误导了,查看用户的时候我以为我取消勾选就是取消授权了但是实际上还有授权了,谢谢了
这个勾勾的意思这个用户是否可以把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');
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');没有授权,肯定是看不了的。
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> 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