Oracle之用户、特权和角色

本文主要包括:

· 介绍创建用户

· 了解如何使用特权来确保用户能够在数据库中执行任务

· 介绍两种特权类型:系统特权和对象特权

· 介绍系统特权怎样允许执行操作,例如执行 DDL 语句

· 介绍对象特权怎样允许执行操作,例如执行 DML 语句

· 介绍如何将特权组合在一起形成角色

一、 用户

数据库使用表空间来存储对象,其中可以包含表、类型和 PL/SQL 代码等

表空间存储在数据文件 (datafile) 中

1. 创建用户

语法:

CREATE USER user_name IDENTIFIED BY password

[DEFAULT TABLESPACE default_tablespace]

[TEMPORARY TABLESPACE temporary_tablespace];

可以从 user_users 查询默认表空间和默认临时表空间

2. 修改用户密码

ALTER USER user_name IDENTIFIED BY password;

PASSWORD 可以用来修改当前登录用户的密码

3. 删除用户

DROP USER user_name;

注:如果要删除的用户模式中包含任何表或其他项,就必须在 DROP USER

语句中,在要删除的用户名后面加上关键字 CASCADE

二、 系统特权

系统特权(system privilege)允许用户在数据库中执行特定的操作,比如执行 DDL 语句

常用的系统特权如下表

\"></p>
<p style=

6. 检查授予角色的对象特权

通过查询 role_tab_privs 可以检查已经授予角色哪些对象特权

7. 使用已授予角色的特权

对于无密码保护的角色,通过角色将特权授予用户之后,用户连接到数据库后就

可以立即使用这种特权了;

对于密码保护的角色,用户必须输入角色密码才能使用这个角色

SET ROLE role_name IDENTIFIED BY role_password;

8. 启用和禁用角色

可以禁用角色,ALTER ROLE 语句可以用来对角色进行修改,使其变为非默认角色

范例:以 system 用户身份连接到数据库,并对 john 用户进行修改,使 hr_manager 不再是默认角色

CONN system/oracle

ALTER USER john DEFAULT ROLE ALL EXCEPT hr_manager;

范例:使用 SET ROLE 命令启用 hr_manager 角色

SET ROLE hr_manager;

范例:将 hr_manager 角色设置为默认角色,它在退出登录后仍然保留

CONN system/oracle

ALTER USER john DEFAULT ROLE hr_manager;

范例:可以将角色设置为 NONE ,这表示没有角色

CONN john/brown

SET ROLE NONE;

范例:将角色设置为除 hr_manager 之外的任何角色

SET ROLE ALL EXCEPT hr_manager;

9. 撤销角色

REVOKE 语句可以用来撤销角色

REVOKE role_name FROM user_name;

10. 从角色中撤销特权

REVOKE 语句可以用来从角色中撤销某种特权

REVOKE ALL ON table_name FROM role_name;

11. 删除角色

DROP ROLE 语句可以用来删除角色

DROP ROLE role_name;

猜你喜欢

转载自wumaodan.iteye.com/blog/2180877