【发布时间】:2018-12-10 11:53:09
【问题描述】:
如果我在用户 A 中创建表。
如果我没有给它任何权限,用户 B 如何查询该表?
在该代码中,我正在从名为“DBA_MAINT”的 DBA 用户创建表 general.privs_test。
之后,我切换到另一个用户并尝试查询该表。
也不例外,即使那张桌子上没有授权。
SQL> select user from dual;
USER
------------------------------
DBA_MAINT
SQL> create table general.privs_test(id number);
Table created.
SQL> conn dp99712a
Enter password:
Connected.
SQL> select user from dual;
USER
------------------------------
DP99712A
SQL> select * from general.privs_test;
no rows selected
SQL> desc all_tab_privs;
Name Null? Type
----------------------------------------- -------- ----------------------------
GRANTOR NOT NULL VARCHAR2(30)
GRANTEE NOT NULL VARCHAR2(30)
TABLE_SCHEMA NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
PRIVILEGE NOT NULL VARCHAR2(40)
GRANTABLE VARCHAR2(3)
HIERARCHY VARCHAR2(3)
SQL> select grantee,table_schema,table_name,privilege, grantable from all_tab_pr
ivs where table_name = 'PRIVS_TEST';
no rows selected
我的版本是 ORacle 11g。
【问题讨论】:
-
用户已授予
select any table角色?或者授权是通过角色完成的。检查user_role_privs和user_sys_privs。 -
查看
USER_ROLE_PRIVS、USER_SYS_PRIVS、USER_TAB_PRIVS的视图
标签: sql oracle oracle11g privileges