Oracle-用户、权限与角色

章节目标

  • 通过本章学习,学员应达到如下目标:
    • 理解用户概念;
    • 掌握创建用户方法;
    • 理解权限概念;
    • 理解如何进行权限分配和收回;
    • 理解角色概念;
    • 理解如何通过角色进行权限分配;

本章内容

用户

  • 用户
    • 用户是数据库的使用者。
    • 用户一般是由DBA来创建和维护的,创建用户后,用户不可以执行任何Oracle操作(包括建立会话),只有赋予用户相关的权限,用户才能执行权限允许范围内的操作。
  • 创建用户
    • 语法
CREATE USER user                           
IDENTIFIED BY   password
[default tablespace 默认表空间名 
temp tablespace 临时表空间名 quota 配额大小 on 表空间名]
  • deafult tablespace:用户的默认表空间;

  • temporary tablespace: 用户的临时表空间;

  • quota on :表示允许该用户在表空间中使用的空间大小,可以设置多个不同的表空间;

  • 执行该语句的用户需要有“创建用户”的权限,一般为系统的DBA用户。

  • 例:以SYSTEM用户登录,创建test用户

CREATE USER test IDENTIFIED BY test;
  • 用户被创建后,没有任何权限,包括登录。用户如果想登录,至少需要有“CREATE SESSION”的权限
GRANT CREATE SESSION TO test;
  • 例:以test用户身份建表
CREATE TABLE emp1(id NUMBER,
            name VARCHAR2(20),
            sal NUMBER);
返回权限不足。
  • 对新建用户,默认情况没有创建对象的权限,用户要想创建对象,需要有对象的创建权限CREATE TABLE、CREATE SEQUENCE等

  • 赋予test用户创建表的权限

Conn system/oracle;
GRANT CREATE TABLE TO test;
  • 例:test用户身份执行建表操作
CREATE TABLE emp1(id NUMBER,name VARCHAR2(20),sal NUMBER);
返回错误“表空间USERS中无权限”
  • 修改配额
ALTER USER 用户名
QUOTA 10m ON 表空间名; 
  • 例:以SYSTEM用户身份执行,给test分配USERS表空间的10M配额
ALTER USER test
QUOTA 10m ON users;
  • 例:以test用户身份执行建表命令
CREATE TABLE emp1(id NUMBER,name VARCHAR2(20),sal NUMBER);
表已创建。
  • 修改密码
ALTER USER user IDENTIFIED BY 新密码;
  • DBA可以修改任何普通用户的密码,而不需要知道用户的旧密码。

  • 在sqlplus下执行password命令来修改登录用户自己的密码,提示会输入旧密码和新密码。

  • 用户状态

  • OPEN:正常状态,为用户帐号初始创建后状态。

  • EXPIRED:密码过期状态,用户下次登录的时候需要修改密码;

  • LOCKED:锁定状态,不能执行任何Oracle相关操作

  • 状态管理语句

ALTER USER user PASSWORD EXPIRE;--密码过期
ALTER USER user ACCOUNT LOCK[UNLOCK];--帐户锁定/解锁
  • 删除用户
DROP USER user [CASCADE]
  • CASCADE表示系统先自动删除该用户下的所有对象,然后再删除该用户的定义。
  • 已经登录的用户是不允许被删除的。

权限

  • 权限概述

    • 数据库用户要想在数据库上执行任何操作,必须首先要拥有权限,包括建立会话。
  • 权限分类

    • 系统权限:允许用户在数据库中执行指定的行为,一般可以理解成比较通用的一类权限。
    • 对象权限:允许用户访问和操作一个指定的对象,该对象是一个确切存储在数据库中的命名对象。
  • 系统特权

    • SYSOPER:启动停止数据库,恢复数据库等;
    • SYSDBA:所有SYSOPER功能的管理权限;创建数据库等权限。

系统权限

  • 授予系统权限
GRANT sys_priv_list TO user_list [WITH ADMIN OPTION]
  • sys_priv_list:系统特权列表,由逗号分隔;

  • user_list: 用户列表,由逗号分隔;

  • WITH ADMIN OPTION:允许权限的接受者再把此特权授予其他用户。

  • 例:授予test用户CREATE SESSION权限,并且允许test把该权限授予别人。

GRANT create session TO test WITH ADMIN OPTION;
  • 回收系统权限
REVOKE sys_priv_list FROM user_list ;
  • 注意:使用 WITH ADMIN OPTION 选项授予的权限,在回收时候的回收策略如下:
    • 如果A授予权限给B,B又把该权限赋予给C ,如果此时A把权限从B处收回,那么B给予出去的权限是继续保留,即C继续拥有该权限。

对象权限

  • 对象权限
    • 是在指定的表、视图、序列或过程上执行指定动作的权限或权利。
    • 每种对象都有一个特殊的可授予的权限集。
    • 对象的所有者自动拥有该对象的所有权限,并且能够把权限授予其它用户。
  • 授予对象权限
GRANT object_priv | [ALL PRIVILEGES ]|[(column)]
ON      [schema.]object
TO      {user|PUBLIC} [WITH GRANT OPTION];
  • object_priv:是将被授予的对象权限;

  • ALL PRIVILEGES:指定对象的所有权限;

  • column:在授予INSERT、REFERENCES或UPDATE权限时可以指定列;

  • ON object:指定的对象名;

  • TO user:指定权限被授予谁;

  • TO PUBLIC:授予权限给所有用户;

  • WITH GRANT OPTION:允许被授予权限的用户再授予对象权限给其它用户;

  • SCHEMA:指定用户名,如果省略,默认为当前用户;

  • 例:把员工表的查询权限给Test用户;

GRANT select on employees To test;
  • 回收对象权限
REVOKE 对象权限种类 ON 对象名 FROM user;
  • 对象的权限会级联回收。

角色

  • 角色(ROLE)

    • 角色是权限的集合。
  • 角色作用

    • 简化权限管理。

创建角色

  • 创建角色
CREATE ROLE role;
  • 例:以SYSTEM的用户身份建立测试角色tr
CREATE ROLE tr;

为角色授权

  • 为角色授予权限
GRANT 权限列表 TO 角色列表;
  • 例:给角色tr授予create sequence的权限
GRANT create sequence TO tr;

通过角色为用户授权

  • 通过角色为用户授权
GRANT 角色列表 To 用户列表;
  • 例:通过角色为用户test授权
GRANT tr TO test;
  • 以test用户登录,验证是否已拥有相关权限
SELECT * FROM session_privs;

通过角色从用户收回权限

  • 通过角色从用户收回权限
REVOKE 角色 FROM 用户;
  • 从角色收回权限
REVOKE 权限 FROM 角色;
  • 删除角色
DROP ROLE 角色;

预定义角色

  • 预定义角色
    • Oracle数据库预先定义好的角色,通常包括:
    • DBA角色:该角色中的权限通常赋给数据库管理员;
    • CONNECT角色、RESOURCE角色;
    • CONNECT和RESOURCE是相对较安全的角色,角色中包含的权限仅限于用户自己的对象范围,因此,经常使用CONNECT和RESOURCE来简化权限管理。
  • 查看DBA角色中包含的系统权限
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE='DBA’;
  • 查看CONNECT角色中包含的系统权限
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE='CONNECT‘;
  • 查看RESOURCE角色中包含的系统权限
SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE='RESOURCE‘; 

PUBLIC

  • PUBLIC
    • PUBLIC对象既不是用户,也不是角色,代表公众,公开;PUBLIC中拥有的所有权限,所有数据库的用户都会自动拥有;为安全起见,PUBLIC中不应该拥有任何权限。

    • 例:给PUBLIC赋予create session 权限

GRANT create session TO public;
  • 执行上述语句后,所有的用户都会自动从public中获得create session的权限。

本章重点总结

  • 用户的管理
  • 权限的管理
  • 角色的管理

分割线


博主为咯学编程:父母不同意学编程,现已断绝关系;恋人不同意学编程,现已分手;亲戚不同意学编程,现已断绝来往;老板不同意学编程,现已失业三十年。。。。。。如果此博文有帮到你欢迎打赏,金额不限。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容