• Oracle系列十五 控制用户权限


    权限

    • 数据库安全性

    --系统安全性

    --数据安全性

    • 系统权限: 对于数据库的权限
    • 对象权限: 操作数据库对象的权限

    系统权限

    • 超过一百多种有效的权限
    • 数据库管理员具有高级权限以完成管理任务,例如:
    1. 创建新用户
    2. 删除用户
    3. 删除表
    4. 备份表

    创建用户

    DBA 使用 CREATE USER 语句创建用户

    CREATE USER user                             
    IDENTIFIED BY   password;

    注:oracle 12c在结构上做出了调整,引入了CDB和PDB的概念,CDB中的操作,用sys默认登录的是CDB,但是如果想在CDB中创建用户(可以理解为公共用户)的话,那么必须在用户名前面加上“c##”,否则会报错:

    正确写法:

    用户的系统权限

    用户创建之后, DBA 会赋予用户一些系统权限

    GRANT privilege [, privilege...]            
    TO user [, user| role, PUBLIC...];

    以应用程序开发者为例, 一般具有下列系统权限:

    • CREATE SESSION(创建会话)
    • CREATE TABLE(创建表)
    • CREATE SEQUENCE(创建序列)
    • CREATE VIEW(创建视图)
    • CREATE PROCEDURE(创建过程)

    DBA 可以赋予用户特定的权限

    GRANT  create session, create table, 
           create sequence, create view
    TO     c##loaderman;

    创建用户表空间

    • 用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间用于创建的表
    ALTER USER c##loaderman
        QUOTA UNLIMITED ON users;

    角色

    创建角色并赋予权限

    • 创建角色
    CREATE ROLE c##manager;
    • 为角色赋予权限
    GRANT create table, create view           
    TO c##manager; 
    • 将角色赋予用户
    GRANT c##manager TO c##loaderman;     

    修改密码

    • DBA 可以创建用户和修改密码
    • 用户本人可以使用 ALTER USER 语句修改密码
    ALTER USER c##loaderman                           
    IDENTIFIED BY loaderman;

    对象权限

    • 不同的对象具有不同的对象权限
    • 对象的拥有者拥有所有权限
    • 对象的拥有者可以向外分配权限
    GRANT    object_priv [(columns)]
     ON        object
     TO        {user|role|PUBLIC}
     [WITH GRANT OPTION];
    • 分配对象权限
    • 分配表 EMPLOYEES 的查询权限





    分配表中各个列的更新权限

    GRANT  update
    ON     system.departments
    TO     c##loaderman

    WITH GRANT OPTION和PUBLIC关键字

    • WITH GRANT OPTION 使用户同样具有分配权限的权利
    GRANT  select, insert
    ON     departments
    TO     c##loaderman
    WITH   GRANT OPTION;



    向数据库中所有用户分配权限

    GRANT  select
    ON      system.departments
    TO      PUBLIC;



    查询权限分配情况


    收回对象权限

    • 使用 REVOKE 语句收回权限
    • 使用 WITH GRANT OPTION 子句所分配的权限同样被收回
    REVOKE {privilege [, privilege...]|ALL}
    ON      object
    FROM   {user[, user...]|role|PUBLIC}
    [CASCADE CONSTRAINTS];
    REVOKE  select, insert
    ON      departments
    FROM    c##loaderman;

     使用新建的用户连接数据库:

















  • 相关阅读:
    通过均匀分布随机数产生器获得一个高斯分布随机数产生器
    小雷郑重承诺:在2017年之前,对大学毕业4年以来的全部努力和探索,做一个全面客观的总结,技术研究、工作创业、投资理財、朋友感情等
    libevent入门篇
    [ACM] POJ 2000 Gold Coins
    hdu 2669
    IOS开发之 __bridge __bridge_transfer和__bridge_retained
    mysqlpassword忘记时怎样改动password(Linux&Windows)
    计蒜客 15 map遍历
    SDUT OJ-2896
    c++ 银行管理系统及报告
  • 原文地址:https://www.cnblogs.com/loaderman/p/11834296.html
Copyright © 2020-2023  润新知