用户、权限和角色

2
1

programming
1
Oracle SQL开发基础
2
2

programming
课程结构

内容

课时(H)

第一章 Oracle数据库基础

2.5

第二章 编写简单的查询语句

1.5

第三章 限制数据和对数据排序

2

扫描二维码关注公众号,回复: 3848976 查看本文章

第四章 单行函数

4

第五章 多表查询

4

第六章 分组函数

3

第七章 子查询

4

第八章 数据操作与事务控制

4

第九章 表和约束

4

第十章 其他数据库对象

4


2
3

programming
第十一章 用户、权限和角色
目标:
本章旨在向学员介绍:
1) 用户的概念及管理
2)权限的概念及管理
3)角色的概念及管理
时间: 2学时

教学方法:讲授ppt+上机练习


2
4

programming
本章要点
.用户的概念及管理
.权限的概念及管理
.角色的概念及管理



2
5

programming
第十一章 用户、权限和角色
用户、权限和角色:

11.1管理用户

11.2权限

11.3角色


2
6

programming
11.1管理用户
.用户
–用户是数据库的使用者。用户相关的信息包括用户的用户
名称和密码、用户的配置信息(包括用户的状态,用户的
默认表空间等)、用户的权限、用户对应的方案中的对象
等。
–用户一般是由DBA来创建和维护的。创建用户后,用户不
可以执行任何Oracle操作(包括登陆),只有赋予用户相
关的权限,用户才能执行相关权限允许范围内的相关操作。
对用户授权可以直接授权,也可以通过角色来间接授权。



2
7

programming
11.1.1创建和修改用户语法 1/11

.创建用户
–创建用户语法
–Deafult tablespace 用户的默认表空间
–Temporary tablespace 用户的临时表空间
–Quota on 表示允许该用户在表空间中使用的空间总大小。
可以设置多个不同的表空间
–执行该语句的用户需要有“创建用户”的权限,一般为系
统的DBA用户。


CREATE USER user
IDENTIFIED BY password [default tablespace 默认表空间名
temp tablespace 临时表空间名 quota 配额大小 on 表空间名]
2
8

programming
11.1.1创建和修改用户语法 2/11
.创建用户示例
–以SYSTEM用户登陆。
–用户被创建后,没有任何权限,包括登陆。


CREATE USER test IDENTIFIED BY test;
conn system
请输入口令: ******
已连接。
2
9

programming
11.1.1创建和修改用户语法 3/11

.登陆权限
–用户如果想登陆,至少需要有“CREATE SESSION”的权
限。


GRANT CREATE SESSION TO test;
2
10

programming
11.1.1创建和修改用户语法 4/11
.用户建表相关权限
–对新建用户,默认情况,用户对于其所拥有对象具有所有
的数据的增删改查权限,但没有定义的权限(如创建表
等)。用户要想创建对象,需要有对象的创建权限
CREATE TABLE、CREATE SEQUENCE等
–以test用户身份建表:


CREATE TABLE emp1(id NUMBER,last_name
VARCHAR2(20),salary NUMBER);
返回权限不足。
2
11

programming
11.1.1创建和修改用户语法 5/11
.用户建表相关权限
–赋予test用户的创建表的权限。
–test用户身份执行建表操作:
–建表的相关权限:
.CREATE TABLE
.空间使用权限,需要DBA来分配。


CREATE TABLE emp1(id NUMBER,last_name
VARCHAR2(20),salary NUMBER);
返回错误“表空间‘SYSTEM’中无权限”
Conn system/oracle;
GRANT CREATE TABLE TO test;
2
12

programming
11.1.1创建和修改用户语法 6/11
.用户空间分配和管理:
–给用户分配表空间的配额;
–给用户指定一个默认的表空间,如果没有特殊指定,则对
象都是在该用户默认表空间中创建的。如果不指定默认表
空间,则系统缺省默认表空间是SYSTEM,默认情况下,
SYSTEM表空间也没有给任何普通用户分配配额(SYS和
SYSTEM用户除外。
–查询数据库表空间。以SYSTEM用户身份:


SELECT * FROM v$tablespace;
2
13

programming
11.1.1创建和修改用户语法 7/11
.修改默认表空间和配额
–语法


ALTER USER 用户名
QUOTA 10m ON 表空间名;
ALTER USER 用户名
DEFAULT TABLESPACE 默认表空间名;
2
14

programming
11.1.1创建和修改用户语法 8/11
.修改默认表空间和配额
–以SYSTEM用户身份执行:
–以test用户身份执行
–以SYSTEM用户身份执行,给test分配配额。


ALTER USER test
QUOTA 10m ON example;
CREATE TABLE emp1(id NUMBER,last_name
VARCHAR2(20),salary NUMBER);
返回错误“ 表空间‘EXAMPLE’中无权限”。
ALTER USER test
DEFAULT TABLESPACE example;
2
15

programming
11.1.1创建和修改用户语法 9/11
.修改默认表空间及配额
–以test用户身份执行建表命令。
–上例显示了test用户在表空间“example”上分配了10m的
空间使用权限,用户在该表空间上只有10M的使用权限,
如果超过该限度,用户的相关操作执行失败。


 

CREATE TABLE emp1(id NUMBER,last_name
VARCHAR2(20),salary NUMBER);
表已创建。
2
16

programming
11.1.1创建和修改用户语法 10/11
.修改用户密码
–语法
–DBA可以修改任何普通用户的密码,而不需要知道用户
的旧密码。
–在sqlplus下执行password命令来修改登陆用户自己的密
码,提示会输入旧密码和新密码。


ALTER USER user IDENTIFIED BY 新密码;
2
17

programming
11.1.1创建和修改用户语法 11/11
.用户状态
–用户状态:OPEN、EXPIRED、LOCKED。
.OPEN表正常状态,为用户帐号初始创建后状态。
.EXPIRED表示密码过期,用户下次登陆的时候需要修改密
码;
.LOCKED表示该帐户已被锁定,不能执行任何Oracle相关操
作(即使拥有相关的权限)。


 

–状态管理语句:


ALTER USER user PASSWORD EXPIRE;--密码过期
ALTER USER user ACCOUNT LOCK[UNLOCK];--帐户锁定/解锁
2
18

programming
11.1.2删除用户
.删除用户
–删除用户语法
–CASCADE表示系统先自动删除该用户下的所有对象,然后
再删除该用户的定义。
–已经登陆的用户是不允许被删除的。


DROP USER user [CASCADE]
2
19

programming
11.1.3查询用户信息
.数据字典视图
–与用户信息相关的数据字典视图有
.DBA_USERS是关于用户的属性信息
.DBA_TS_QUOTAS是用户的相关表空间的配额信息。


–数据字典视图一般是以SYSTEM用户身份执行:


SELECT username,account_status,default_tablespace FROM
dba_users;
SELECT * FROM dba_ts_quotas;
2
20

programming
第十一章 用户、权限和角色
用户、权限和角色:

11.1管理用户

11.2权限

11.3角色


2
21

programming
11.2.1系统权限概念及分类 1/6
.权限管理
–Oracle中存在两种权限
.系统权限(SYSTEM PRIVILEGE):允许用户在数据
库中执行指定的行为,一般可以理解成比较通用的一类
权限。
.对象权限(OBJECT PRIVILEGE):允许用户访问和
操作一个指定的对象,该对象是一个确切存储在数据库
中的命名对象。



2
22

programming
11.2.1系统权限概念及分类 2/6
.系统权限
–包含100多种系统权限,其主要作用:
.执行系统端的操作,比如CREATE SESSION是登陆的
权限,CREATE TABLESPACE创建表空间的权限
.管理某类对象,比如CREATE TABLE是用户建表的权

.管理任何对象,比如CREATE ANY TABLE,ANY关键
字表明该权限“权力”比较大,可以管理任何用户下的
表,所以一般只有DBA来使用该权限,普通用户是不应
该拥有该类权限的。



2
23

programming
11.2.1系统权限概念及分类 3/6
.表的系统权限
–CREATE TABLE(建表)
–CREATE ANY TABLE(在任何用户下建表)
–ALTER ANY TABLE(修改任何用户的表的定义)
–DROP ANY TABLE(删除任何用户的表)
–SELECT ANY TABLE(从任何用户的表中查询数据)
–UPDATE ANY TABLE(更改任何用户表的数据)
–DELETE ANY TABLE(删除任何用户的表的记录)。



2
24

programming
11.2.1系统权限概念及分类 4/6

.索引及会话系统权限
–索引:
.CREATE ANY INDEX(在任何用户下创建索引)
.ALTER ANY INDEX(修改任何用户的索引定义)
.DROP ANY INDEX(删除任何用户的索引)


–会话:(SESSION)
.CREATE SESSION(创建会话,登陆权限)
.ALTER SESSION(修改会话)



2
25

programming
11.2.1系统权限概念及分类 5/6
.表空间系统权限
–表空间
.CREATE TABLESPACE(创建表空间)
.ALTER TABLESPACE(修改表空间)
.DROP TABLESPACE(删除表空间)
.UNLIMITED TABLESPACE(不限制任何表空间的配
额)


–注意: 表空间的所有权限都不应该分配给普通用户。



2
26

programming
11.2.1系统权限概念及分类 6/6
.系统特权
–系统特权权限SYSDBA和SYSOPER
.SYSOPER的权限:启动停止数据库,恢复数据库等
.SYSDBA的权限:所有SYSOPER功能的管理权限;创
建数据库等权限。


–注意: 以系统特权权限登陆的用户一般都是特权用户,或
称为超级用户。以SYSDBA身份登陆的用户在ORACLE中
是权限最大的用户,可以执行数据库的所有操作。这些特
权权限是不应该随便赋予给普通用户的。



2
27

programming
11.2.2授予和回收系统权限 1/3
.系统权限授予
–授予用户系统权限语法
–sys_priv_list:是一个系统特权的列表,由逗号分隔
–User_list:是一个用户的列表,由逗号分隔
–WITH ADMIN OPTION:允许权限的接受者再把此特权授予
其他用户。


GRANT sys_priv_list TO user_list [WITH ADMIN OPTION]
2
28

programming
11.2.2授予和回收系统权限 2/3
.系统权限授予
–授予test用户CREATE SESSION权限
–以test身份执行CREATE SESSION权限管理:


 

GRANT create session TO neu;
GRANT create session TO test WITH ADMIN OPTION;
2
29

programming
11.2.2授予和回收系统权限 3/3
.系统权限回收
–回收系统权限


语法:REVOKE 系统权限列表 FROM user列表;

–只能回收使用GRANT授权过的权限,权限被回收后,用户就失去
了原权限的使用权和管理权(如果有管理权限的话)。
–注意:使用WITH ADMIN OPTION选项授予的权限在回收时候的
级联回收策略如下:
.如果用户A授予权限给用户B,同时带有选项WITH ADMIN OPTION,
用户B又把该权限赋予给用户C;如果此时用户A把权限从用户B处收
回,那么用户B给予出去的权限(用户C对该权限的使用权)是否还继
续存在。在系统权限的管理中,ORACLE的策略是继续保留权限,用
户C继续拥有该权限的使用权。
.也就是说,系统权限不会级联回收。所以在权限回收时必须将获权
用户的权限一一回收。



2
30

programming
11.2.3对象权限概念及分类 1/3
.对象权限
–对象权限 是在指定的表、视图、序列或过程上执行指定动作
的权限或权利。
–每个对象都有一个特殊的可授予的权限集。



2
31

programming
11.2.3对象权限概念及分类 2/3

.对象权限
–对象权限的种类不是很多,但数量较大,因为具体对象
的数量很多。
–对象权限的分类


权限分类﹨对象类型

表(Table)

视图(View)

序列

(Sequence)

存储

(Procedure)

SELECT(选择)

INSERT(插入)

UPDATE(更改)

DELETE(删除)

ALTER(修改)

INDEX(索引)

REFERENCE(引用)

EXECUTE(执行)


2
32

programming
11.2.3对象权限概念及分类 3/3

.对象权限
–不同的对象有不同的对象权限
–对象的所有者自动拥有包含在该用户的方案中的所有对象的所有
权限
–对象的所有者能够给予指定的权限到其他的帐户或者角色



2
33

programming
11.2.4授予和回收对象权限 1/3

 
.授予对象权限
–object_priv:是将被授予的对象权限
–ALL: 指定所有对象权限
–Columns: 从一个表或视图中指定被授予权限的列,但需要注意,只有授予
INSERT、REFERENCES或UPDATE特权时才可以指定列。
–ON object: 是权限被授予的对象
–TO: 指定权限被授予谁
–PUBLIC 授予权限给所有用户
–WITH GRANT OPTION 允许被授予权限的人再授予对象权限给其他用户和角色
–SCHEMA:指定用户名,如果省略,默认为当前用户


.GRANT object_priv |ALL PRIVILEGES ]|[(columns)]
. ON [schema.]object
. TO {user|PUBLIC} [WITH GRANT OPTION];



2
34

programming
11.2.4授予和回收对象权限 2/3

.授予对象权限
–授予对象权限的用户是对象的拥有者(OWNER)或其他有对
象管理权限的用户(常为DBA)。
–以neu身份执行授权命令:


GRANT select on employees To test;


2
35

programming
11.2.4授予和回收对象权限 3/3
.回收对象权限
–回收对象权限语法:
–对象的权限会级联回收。
–权限的查询
.DBA_SYS_PRIVS:查询所有的系统权限的授权情况。
.SESSION_PRIVS:能够查询出当前会话已经激活的所
有系统权限。
.DBA_TAB_PRIVS:查询出表的对象权限的授权情况。


REVOKE 对象权限种类 ON 对象名 FROM user
2
36

programming
第十一章 用户、权限和角色
用户、权限和角色:

11.1管理用户

11.2权限

11.3角色


2
37

programming
11.3.1角色的作用及好处 1/2
.角色(ROLE)的目的就是为了简化权限的管理。


权限 J0199727
J0199727
J0199727
J0199727
J0199727
J0199727
J0199727
J0199727
J0195384
J0195384
J0195384
J0195384
J0195384
J0195384
用户

单独授予权限

使用角色授予权限
role


2
38

programming
11.3.1角色的作用及好处 2/2
.使用角色的好处
–简化权限的管理,而且易于以后的维护,使得维护成本降低。
–动态权限的管理
–权限的可选择性



2
39

programming
11.3.2创建角色/授予角色权限 1/4
.角色管理
–创建角色语法:


 

–以SYSTEM的用户身份建立测试角色tr。


CREATE ROLE role;

CREATE ROLE tr;
2
40

programming
11.3.2创建角色/授予角色权限 2/4

.角色管理
–为角色授权语法:


 


–给角色tr授予create sequence的权限。


 


GRANT 权限列表 TO 角色列表
GRANT create sequence TO tr;
2
41

programming
11.3.2创建角色/授予角色权限 3/4
.角色管理
–通过角色为用户授权语法:


 


–通过角色为用户test授权
–以test用户登陆,验证是否已拥有相关权限


GRANT tr TO test;
SELECT * FROM session_privs;

GRANT 角色列表 To 用户列表;
2
42

programming
11.3.2创建角色/授予角色权限 4/4
.收回角色
–通过角色从用户收回权限语法:
–从角色收回权限语法:
–删除角色语法:


REVOKE 权限 FROM 角色;
REVOKE 角色 FROM 用户;
DROP ROLE 角色;
2
43

programming
11.3.3预定义的角色 1/3

.预定义角色
–常用预定义角色:
.DBA角色。该角色中的权限通常赋给数据库管理员。
.CONNECT角色。
.RESOURCE角色。


–CONNECT和RESOURCE是相对较安全的角色,角色中包
含的权限仅限于用户自己的对象范围,因此,可使用
CONNECT和RESOURCE来简化权限管理。
–两者区别是RESOURCE中没有登陆的权限,并增加了几种
对象的创建权限。



2
44

programming
11.3.3预定义的角色 2/3
.查看预定义角色的权限
–角色DBA中包含的系统权限
–CONNECT角色的相关权限:
–RESOURCE角色中的权限:


SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE='RESOURCE'
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE='CONNECT‘
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE='DBA‘
2
45

programming
11.3.3预定义的角色 3/3

.PUBLIC
–PUBLIC对象既不是用户,也不是角色,代表公众,公开,
PUBLIC中拥有的所有权限,所有数据库的用户都会自动拥
有。为安全起见,PUBLIC中不应该拥有任何权限。
–给PUBLIC赋予权限
–所有的用户都会自动从public中获得登陆的权限。


GRANT create session TO public;
2
46

programming
11.3.4获取角色信息
.角色相关的数据字典视图
–DBA_ROLES:数据库中的角色列表
–DBA_ROLE_PRIVS:查询把哪些角色赋予给哪些对象了
(包括给用户、角色、PUBLIC)
–SESSION_ROLES:当前用户激活的角色。



2
47

programming
本章小结
.用户的管理
.权限的管理
.角色的管理



2
48

programming
练习

.1.建立新用户user_neu
.2. 给用户user_neu授权,使其能够登陆到数据库,能够查询neu
下的employees表,能修改employees表的salary,last_name两
个字段
.3.查询用户user_neu的权限
.4.回收用户user_neu的登陆权限
.5.回收用户user_neu的所有对象权限
.6.建立角色role_neu



2
49

programming
练习(续)
.7.给角色role_neu授权,使其能够登陆到数据库
.8.赋角色role_neu给用户user_neu
.9.删除角色role_neu
.10.删除用户user_neu



2
50

programming
谢谢



猜你喜欢

转载自blog.csdn.net/jiangjiewudi/article/details/9618073