Oracle 11g学习笔记--特权

Oracle 11g学习笔记–特权

系统特权

系统特权允许用户在数据库中执行特定的操作;

常用的系统特权如表

系统特权 允许执行的操作
create session 连接到数据上
create sequence 创建序列
create synonym 创建同名对象
create table 在用户模式中创建表
create any table 在任何模式中创建表
drop table 删除用户模式中的表
drop table 删除任何模式中的表
create procedure 创建存储过程
execute any procedure 执行任何模式中的存储过程
create user 创建用户
drop user 删除用户
create view 创建视图

注释:
序列:一系列数字,通常用来自动填充主键列。
视图:视图是存储的过程,可以用来对多个表和多列进行访问,然后就可以查询表一样查询视图;

--授权
--with admin option 的意思是授权用户可以继续将自己的权限授予其他用户
grant create session, execute any procedure to uer_name with admin option;
--授权给所有人
grant create session to public;

检查授予用户的系统特权

select *from user_sys_privs;

撤销用户的系统特权

--从user_name上撤销create table的特权
revoke create table from user_name;

对象特权

对象特权允许用户对数据库对象执行的特定操作,如DML语句;

向用户授予对象特权

--授权给user_name,允许对products表进行select, insert, update 等操作;
grant select , insert, update on store.products to user_name;
--将更新t表column_name的权限给u2;
grant update(column_name) on u1.t to u2;

检查已授予的对象特权

通过查询user_tab_privs_made可以检查某个用户对哪些表向其他用户开放了那些对象特权;

user_tab_privs_made的部分列

类型 说明
grantee varchar2(30) 该特权所授予的用户
table_name varchar2(30) 所授予的特权所操作的对象
grantor varchar2(30) 授权者
privilege varchar2(30) 对该对象授予的特权
grantable varcahr2(3) 特权所授予的用户是否可以将这种特权在授予给其他用户,该值等于yes或者no
hierarchy varchar(3) 特权是否构成层次关系。该值等于yes或者no

检查已接受的对象特权
通过user_tab_privs_recd表可以查询某个用户被授予了哪些表上的哪些特权;

类型 说明
owner varchar(30) 拥有该对象的用户
table_name varchar(30) 所授予的特权所操作的对象名
grantor varchar(30) 授权者
privilege varchar(40) 对该对象授予的特权
grantable varchar(3) 特权所有与的用户是否可以将这种特权再授予其他用户,该值等于yes或no
hierarchy varchar(3) 特权是否构成层次关系,该值等于yes或no

通过user_col_privs_recd可以检查某个用户被授予了哪些列的对象特权。

类型 说明
owner varchar(30) 拥有该对象的用户
table_name varchar(30) 所授予的特权所操作的对象名
column_name 所授予的特权所操作的列名
grantor varcahr(30) 授权者
privilege varchar(40) 对该对象授予的特权
grantable varchar(3) 特权所授予的用户是否可以将这种特权再授予给其他用户


使用对象特权
当一个用户要访问另一个用户的表时,需要加上用户名:

select *from user_name.table_name;

同名对象

所谓的同名对象就相当于代号,如你可能访问某个用户的表同上面的方式一样;但是创建了同名对象之后,你就可以不用输入用户名了,直接输入别名就好了,使用方法如下:

注意:此处,假设用户user1要访问user2的friends 表, 当然前提是你得有访问该用户表的权限;
●授权

connect sys/admin as sysdba;
grant create synonym to user1;

●创建同名对象

connect user2/password
create synonym his_friends for user2.frineds;
select * from his_friends;

●销毁同名对象

drop synonym his friends;

公共同名对象

我们也可以为表创建公共同名对象,在创建公共同名对象之后,所有的用户都可以看到这个同名对象。

使用步骤:
●授权

connect sys/admin as sysdba
grant create public synonym to user1;

●创建公共同名对象

connect user1/admin
create public synonym his_friends for user1.friends;

●使用(注意:此时user2必须有访问user1的friends表的权限)

connect user2/admin
select *from his_friends;

撤销用户的对象特权

同撤销其他权限一样,依然使用revoke

connect user1/admin
revoke select on user2.table_name from user1;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章