拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. 技术学习系列
  3. WERN_ORACLE培训
  4. 正文

第03部分 11g 用户和权限管理

2020年3月1日 683点热度 0人点赞 0条评论

一、目标:

1,掌握建立用户、概要文件的使用

2,掌握系统权限的含义及授予、回收

3,掌握对象权限的含义及授予、回收

4,掌握角色的含义、对角色授予权限、把角色分配给用户

二、默认用户

image.png

三、创建新用户及概要文件profile

1、create user 语法:

CREATE USER username 
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace];

2、profile:概要文件,可以让用户规范在profile下的规则

    (1)用户密码有效期

    (2)密码尝试登录次数

    (3)用户密码登录失败,锁定后,被锁定天数 等等

例子:

SQL> create user test1 identified by test1;

SQL> create profile pro1 limit failed_login_attempts 2 password_lock_time 2;

SQL> alter user test1 profile pro1;

3、如果已经存在profile,可以直接在创建用户时,使用自定义profile

SQL> create user test2 identified by test2 profile pro1;

image.png

4、解锁test1,test2;

SQL> alter user test1 account unlock;

5、修改profile(修改密码口令,最多10天就需要进行修改) user

SQL> alter profile pro1 limit password_life_time 10 password_grace_time 2;

1、create profile oracle_dblink_profile limit failed_login_attempts 5 password_lock_time 2;"

2、alter profile oracle_dblink_profile limit password_life_time unlimited ;

3、alter user  oraerp_dblinkuser profile ORACLE_DBLINK_PROFILE;

 

四、权限---系统权限

1、权限指的是执行特定命令或访问数据库对象的权利pro

2、权限有两种类型,系统权限和对象权限 

    (1)系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限

    (2)对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作

3、授予用户权限,可以是系统权限或者对象权限;语法:

    GRANT privilege [,privilege…]   TO  user [, user|role, PUBLIC…]     [WITH ADMIN OPTION];

4、收回系统权限:

    REVOKE create session FROM test1;

5、系统权限的授予

    (1)CONNECT:角色允许用户连接至数据库,并创建数据库对象;

 GRANT CONNECT TO test;

    (2)RESOURCE:角色允许用户使用数据库中的存储空间; 

GRANT RESOURCE TO test;

    (3)CREATE SESSION:  此系统权限允许用户连接到数据库上;

GRANT CREATE SESSION TO test;

    (4)CREATE TABLE:给用户创建表的权限;

GRANT create table to test;

    (5)UNLIMITED:允许用户无限制访问表空间的权限;    

GRANT UNLIMITED TABLESPACE to test;

    (6)create any table :给用户分配权限,可以创建任意表(包括其他用户的表,也可以创建);

grant create any table to test;

注意:如果需要创建表,需要新用户拥有(3),(4)权限,老版本的11g,可能需要(5)权限

  

6、查看用户拥有的权限

  SQL>select * from dba_sys_privs d where d.grantee='TEST1';

image.png

7、传递权限(GRANT 最后增加with admin option)

SQL> grant create session to test2 with admin option;

注:继承后,test2分配给下一个用户test3的create session权限,test3也可以生效;同时如果test的create session 被revoke后,test3可以正常登录,依然拥有create session权限。

五、权限——对象权限——访问某个用户的特定对象(如表、视图等)的对象权限(select on scott.student) 

1、语法:

    GRANT object_privilege [columns…] ON  object  TO  user [, user|role, PUBLIC…]  [WITH GRANT OPTION];

2、收回对象权限REVOKE:

    REVOKE privilege     ON object    FROM {user|role|PUBLIC};

    例:revoke select on scott.student from test2

3、例如:

(1)允许用户查询 EMP 表的记录   

 GRANT SELECT ON SCOTT.EMP TO test1;

(2)允许用户更新 EMP 表中的记录  

GRANT UPDATE ON SCOTT.EMP TO test1;

(3)允许用户插入、删除、更新和查询EMP 表中的记录

 GRANT ALL ON SCOTT.EMP TO test1;

(4)授予精确到列上的权限 

允许用户更新 emp 表中的ename、sal列

grant update(ename,sal) on scott.emp to test1;

(5)with grant option 继承grant 对象权限(9i以及之前是无此功能的)

image.png

(6)revoke select on scott.emp from test2;

注:继承后,test2可以分配给下一个用户test3的select emp表的权限,test3也可以生效;同时如果test2的create session 被revoke后,test3就无法正常select emp的表了,这是和系统权限with admin option的区别

六、角色管理

1、角色管理:角色是一组相关权限的组合,可以将权限授予角色,再把角色授予用户,以简化权限管理。

(1)创建角色CREATE ROLE,应该具有CREATE ROLE系统权限。  

   语法:CREATE ROLE role_name;

(2) 授予角色权限,可以是系统权限或者对象权限。

   语法:GRANT privilege TO ROLE;

grant create session ,create any table, drop any table to role1;

(3) 将角色授予用户

    语法:GRANT role TO user;

grant role1 to test2;

(4) 从用户收回角色

    语法:REVOKE  role  FROM  user;

七、常用角色及系统权限、对象权限查看:

(1)connect、resource、dba等

(2)查看用户具有的系统权限:

SQL>select  * from dba_sys_privs d where d.grantee='CONNECT';

(3)查看有多少角色

SQL>select * from dba_roles;

(4)查看当前用户的角色具有的系统权限

    SQL>select * from role_sys_privs;

(5)查看用户具有的系统权限:(system或sys用户查询)

SQL>select * from dba_sys_privs d where d.grantee='TEST1';

image.png

(6)查看角色具有的对象权限;

SQL>select * from dba_tab_privs where rownum<20 and grantee='DBA';

(7)查看用户具有的对象权限;

SQL>select * from dba_tab_privs where rownum<20 and grantee='TEST1';

8、更改用户口令,删除用户

SQL> alter user test1 identified by test1;
SQL> drop user test1 cascade;

User dropped.

零、总结:

1、查看当前用户的所有权限

    与权限,角色相关的视图大概有下面这些:

      DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限

      USER_SYS_PRIVS:   当前用户所拥有的系统权限

      SESSION_PRIVS:     当前用户所拥有的全部权限

      ROLE_SYS_PRIVS:     某个角色所拥有的系统权

 注意: 要以SYS/SYSTEM用户登陆查询这个视图,否则返回空.

      ROLE_ROLE_PRIVS:    当前角色被赋予的角色

      SESSION_ROLES:      当前用户被激活的角色

      USER_ROLE_PRIVS:   当前用户被授予的角色

另外还有针对表的访问权限的视图:

       TABLE_PRIVILEGES

        ALL_TAB_PRIVS   

       ROLE_TAB_PRIVS:     某个角色被赋予的相关表的权限

2、数据字典

(1)、动态数据字典是以v$xxx开始的数据字典,在数据库中约有150个左右,这些数据字典反映数据库动态运行状况,在不同时间查询会得到不同的结果。

(2)、DBA数据字典是以DBA_xxx表示,该数据字典存储数据库结构,查询DBA数据字典可以反映数据库结构设置,管理磁盘空间和表空间、事务与回退段、用户与表空间等信息。

(3)、用户数据字典是以USER_xxx表示,这些数据字典反应用户所创建的实体信息。如,USER_TABLES、USER_VIEWS,数据库管理员具有操作全体用户所有实体的权限,可以查询这类数据字典,了解用户所创建实体状况,必要时可以将用户创建的不正确的实体删除。

(4)、ALL_xxx类数据字典,表示用户所创建的实体及用户有权可以存取的实体

3、ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA。

  (1)USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息

  (2)ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息

  (3)DBA_*:有关整个数据库中对象的信息

    (这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)

4、举例:

(1)、查看所有用户

  select * from dba_user;
  select * from all_users;
  select * from user_users;

 (2)、查看用户系统权限

  select * from dba_sys_privs;
  select * from all_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;

 (6)、查看当前用户的缺省表空间

  select username,default_tablespace from user_users;

 (7)、查看某个角色的具体权限

  如grant connect,resource,create session,create view to TEST;

 (8)、查看RESOURCE具有那些权限

  用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE'; 

同步于:https://blog.csdn.net/qq_36249352/article/details/79805314

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年3月15日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号