oracle学习笔记九(管理权限和角色)

管理权限和角色
刚创建的用户,没有任何的权限,也不能执行任何操作,如果要执行某种
特定的数据库操作,则必须为其授予系统的权限,如果用户要访问其它方案的对象,
则必须为其授予对象的权限,为了简化权限的管理,可以使用角色
权限:
系统权限,建库,建表,登录,创建用户等
对象权限

创建用户时,会自动创建一个方案,其名字与用户名相同

oracle 9i 有25种角色

系统权限是执行特定类型SQL命令的权利,它用于控制用户可以
执行的一个或是一组数据库操作,比如当用户具有create table权限时,可以在其
方案中建表,当用户具有create any table权限时,可以在任何方案中建表
常用的系统权限有:
create session连接数据库 create table 建表
create view 建视图 create public synonym 建同义词
create procedure 建过程,函数,包 create trigger 建触发器
create cluster 建簇

显示系统权限
oralce 提供了140种系统权限,显示所有系统权限
select * from system_privilege_map order by name;

授予系统权限
一般由DBA完成,如果用其它用户来授予系统权限,则要求该用户必须具有grant any privilege的系统权限,
在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授予其它
的用户或是角色

创建用户ken
create user ken identified by ken;
给ken授权
grant create session,create table to ken with admin options;
grant create view to kens;

通过ken给tom授权
grant create session,create table to tom;成功
grant create view to tom; 不成功

回收系统权限
一般情况,回收系统权限是由DBA来完成,如果其它的用户来回收系统权限,
要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option)
,回收系统权限使用revoke来完成

system--ken---tom

用system执行如下操作
revoke create session from ken;
回收系统权限不是级联回收

对象权限:
常用的有:
alter 修改,delete 删除 select 查询 insert 添加 update,index,
references引用, execute执行

授予对象权限:
在oracle9i前,授予对象权限是由对象的所有者来完成,如果用其它的用户来操作
则需要用户具有相应的with grant option 权限,从oracle9i开始,DBA用户
sys,system可以将任何对象上的对象权限授予其它用户,授予对象权限是用grant命令来未完成的

对象权限可以授予用户,角色,和public,在授予授予权限时,如果带有
with grant option选项,则可以将该权限转授给其它用户
但是要注意with grant option选项不能被授予角色

有三种用户可以授权:system,sys,表所属的用户
monkey用户查询scott用户的emp表
使用scott用户给monkey用户授权;
grant select on emp to monkey;
grant all on emp to monkey; all:select,delete,update

希望monkey只能修改scott.emp的表的sal字段,授权如下:
grant update on emp(sal) to monkey;

授予alter权限
如果black用户要修改scott.emp表的结构,则必须授予alter对象权限
grant alter on emp to black

授予index权限
black可以在scott.emp上建立索引:
grant index on scott.emp to black

with grant option 只能用在用户上

回收对象权限:
在oracle9i中,收回对象的权限可以由对象的所有者来完成,也可以用dba用户(sys,system)
来完成,对象的权限是级联回收的
conn scott/tiger@myoral
revoke select on emp from black

补充:


用户名,权限,角色:
在建立用户时,oracle会把用户的信息存放到数据字典中,当给
用户授予权限或角色时,oracle会将权限和角色的信息存放到数据字典,
通过查询dba_users可以显示所有数据库用户的详细信息
通过查询数据字典视图dba_sys_privs可以显示用户所具有的系统权限
通过查询数据字典视图dba_tab_privs可以显示用户具有的对象权限
通过是是查询数据字典dba_col_privs可以显示用户具有的列权限
通过是查询数据库字典视图dba_role_privs可以显示用户所具在的角色

如:scott用户具有什么角色:
select * from dba_role_privs where grantee='scott';
角色:包含多个权限,给用户分配角色,
怎么查询一个角色包含的权限?
查询某个角色包括哪些系统权限:
select * from dba_sys_privs where grantee='CONNECT'
select * from dba_sys_privs where grantee='DBA
或者 select * from role_sys_privs where role='CONNECT''
查询某个角色包括的对象权限:
select * from dba_tab_privs where grantee='角色名'
select * from dba_tab_privs where grantee='CONNECT'


查询oracle中所有的系统权限,一般是dba
select * from system_privilege_map order by name;
查询oralce中所有的角色? 一般是DBA
select * from dba_roles
查询oracle中所有对象权限,一般是DBA,
select distinct privilege from dba_tab_privs;
查询数据库的表空间
select tablespace_name from dba_tablespaces;

对象权限:针对对象而言
数据权限:针对系统而言

如果查看某个用户具有什么样的角色?
select * from dba_role_privs where grantee='用户名';
如:select * from dba_role_privs where grantee='scott'

显示当前用户可以访问的所有数据字典视图:
select * from dict where comments like '%grant%';

显示当前数据库的全称:
select * from global_name;




-----------------------------查看用户权限--------------------------------------------------------------

1.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;
2.查看用户或角色系统权限:
select * from dba_sys_privs;
select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;


Sql*plus 常用命令:

连接命令:
1 conn
用法: conn 用户名/密码 @网络服务器名 【as sysdba/sysoper】,当特权用户连接时,必需带上 as sysdba或者是as sysoper;
conn system/manager as sysdba;


Start命令:执行文件里的sql语句:如d:\aa.sql的文件
Start d:\aa.sql;或者 @ d:\aa.sql;

Spool 命令,,把屏幕上的信息输入到文件里去。Spool d:\dd.sqp select 语句 spool off;

Set linesize 120;
Set pagesize 5;

创建用户:必须是管理员才有创建用户的权限

Create user eric identified by aa123456;
创建的新数据库是没有任何权限的,连登录数据库的权限都没有;

修改用户密码:
passw 命令;修改自己的密码

管理员给用户修改密码
passsword eric;


删除用户:也是需要有dba的身份去删除。自己不能删除自己;
如果要删除的用户,已经创建了表,那么就需要在删除时带一个参数 cascade;(级联删除表)


oracle安装成功后,会默认生成三个用户:
sys用户:超级管理员,权限最高,它的角色dba,密码是change_on_install
system用户:是系统管理员,权限也很高,它的角色是dbaoper 密码是manager;
scott用户:普通用户,密码是tiger;

sys与system
sys 有create database的权限,而system没有。其它相似;

在日常对oracle管理过程中,使用system就够了。


权限管理:
登录数据库权限:(system,sys可以给用户赋权限)
grant connect to eric;
(其中connect 是角色;dba角色,resource角色可以让用户在任何表空间建表)

权限分两种:
系统权限:用户对数据库的相关权限;如:create session.建库,建表,建索引,登录。。。
对象权限:用户对其它用户的数据对象访问(操作)的权限;select,insert,delete,update,all,create index...


数据对象:用户创建的表,索引,存储过程,视力,触发器,函数,过程,包,类型,工作,库,序列,角色,表空间等。。。

角色:分两种
预定义角色
自定义角色
connect包含了7种权限;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值