上次我们主要讲了ORACLE基本的SQL,SQL语法,然后很多同学用的可能是MYSQL,可能没那么大兴趣,但是我还是觉得以后ORACLE是主流啊,上次讲了ORACLE的一些语法,还有高级的查询,比如说MERGE,START WITH CONNECTOR BY这是递归,还有ORACLE的一些统计分析函数,那么咱们继续,争取把这些讲完,首先用户访问控制,索引,物化视图,同义词,DBLINK,简单介绍一下,首先说一下用户的访问控制,你使用ORACLE,相当于扫盲,就是用户控制这一块

这块是非常简单的,比如用户装完数据库以后,发现SCOTT,或者HR,其他用户被锁住了,或者想锁定,利用这几个语句,然后向修改密码的,然后查看用户表信息,创建用户和删除用户这里面都有,然后加上名称,identified by [password] 这是你自己写的,可以直接指定自己的用户密码,删除用户采用dropORACLE里面有对象的概念吗,比如所属用户的对象,比如对象的视图啊,其他的东西都可以被删除我还是用PL/SQL Developer,然后还是用scott去登陆,我现在用的是一个最普通的用户,用的是scott这个用户登陆的,然后我的左上角有很多的WINDOW,,比如SQL Window,Report Window,Command Window,那我们可以用Command Window去连一下管理员,管理员用户, conn system/tiger

我这个PL/SQL Developer是用scott登陆的,但是我在Command命令里面,登陆的是System,那我就可以对其他的用户进行授权,做一些其他的事情,你比如我们的里面的HR,HR的用户我是处于解锁的状态,我看我能不能登陆进去,比如我conn hr/tiger

select * from tabs;HR的用户里面可能有这几张表

只不过HR里面的数据量会比较大,目前我这个HR用户是可以登陆的,默认肯定都是锁着的,那我可以用这几个命令去操作,比如用alter user[USER] account lock,alter user hr account lock;


权限不足是因为你现在登陆的是HR,你自己不能锁自己,所以你得用system,你用scott也是不行,因为权限不足,你得用system去登, conn system/tiger,然后去锁住他

他跟我说用户不存在,那我就锁一个scott试一下

这个可以去做的,我这个hr怎么不存在呢,那我现在如果用scott登陆就不行了呗,conn scott/tiger,他就说已经被锁住了

那我先可以去解锁,alter user scott accoutn unlock;还是用system去登陆,然后去解锁

这都是可以的,我们在这里再使用一下scott, conn scott/tiger,这回就登陆进来了

他就登陆进来了

看到这几张表了,就是非常简单的这几个操作,还有是设置一个用户,用户名是自己指定的,可以自己建立一个新的用户,然后identified by,然后后面是密码,查看用户的表信息,这肯定是DBA去,用户信息表,然后还有创建用户和删除用户,这两个命令,先不说了,太简单了,简单的了解一下

然后赋权这个事也是简单的了解一下吧,这个我不想说太多,如果我给一个用户进行赋权的话,grant 这个权限 to 这个用户,如果回收的话,revoke 这个权限 from 这个用户,比如查看这个用户所有的权限,select * from session_privs,我们可以看一下,我用SCOTT登陆的

当前SCOTT这个用户可能有这几个权限,就是这几个权限,SCOTT有的,10个权限,然后我再去开启一个窗口吧,Command Window,我这个窗口用system等一下, conn system/tiger,然后我去给他赋一个权限,这个很简单,就是grant 加一个权限 to 哪个用户, grant view to scott,这个权限就啥来的,grant createview to scott

就是我已经给他赋了createview这个权限了

那这个时候我的scott用户呢他就能有createview这个权限了,然后如果想要回收,也非常的简单,就是revoke,revoke 权限 from 用户,权限也是createview这个权限,然后from咱们的scott这个用户,revoke create view from scott

再次去看看他的权限

这就是简单的授权和赋权,你得用system用户去登陆,还有其他的,在咱们的ORACLE里面,最著名的两个角色,除了dba之外,用的两个角色就是connect,resource,你自己去做一个实际库实例的话,你指定DBA就可以了,但是有的时候你可以指定connect,resource,给一个用户指定这两个权限,然后说完了之后,简单的说一下,我就不操作了,比如我们重新建立一个用户,叫zhangsan,给他去指定密码,也叫1234,然后这个用户建立好了以后,那第一件事我就是要干什么,因为这个用户你刚建立好,你可以给他分配权限,然后加上什么表空间啊,一堆东西,然后zhangsan我们可以分配connect和resource两个权限,你会发现,除了正常的权限之外,应该和scott这个用户去做对比,scott用户有10个权限,你新建zhangsan这个用户,比如scott多一个权限,就多了一个unlimited权限,那这个权限是干啥用的呢,他的含义是拥有所有表空间配额的使用权限,整个ORACLE所有的地方我都能用,这个权限就太大了,一般我们在真实的生产的时候,我建立完一个用户之后,我需要把表空间份额的权限给回收,执行这句话,revoke unlimited tablespace from 当前zhangssan这个人,回去可以自己去练一练,然后你就可以去查看用户的缺省表空间,select username,default_tablespace from user_users,创建用户的时候也可以指定用户他指定的表空间是什么,这个也是可以去做,然后重新去分配一下用户的配额,alter user zhangsan quota 10m on users; 10m是10兆,我这里随便写的10M,on在一个表空间,ORACLE缺省表空间,一般都是users,比如咱们的scott

这是名字,它是缺省表空间,我新建zhangsan,缺省表空间也是users,那我可以干什么事呢,我可以重新给他一个配额,alter user zhangsan quota 10m on users;给他100M,你给他一个G,都可以的,然后下面就是说,你可以让新用户,拥有对scott.emp表的一个权限,怎么做呢,grant select这个权限,on scott.emp这张表,to给谁,grant select on scott.emp to zhangsan,给张三这个人,你想新建的用户张三,在scott这个schema上,去创建表的权限也可以,grant create any table to zhangsan;随便起个名字叫zhangsan,然后还有什么啊,还有让新建用户拥有scott.emp表的修改权限,就是我新建的一个用户,修改scott这个Schema,emp修改字段的权限,直接grant select,update,并且可以指明那个字段的权限update(sal),on emp表,to给谁,给这个tim, grant select,update(sal) on emp to tim;可以精确到这个字段,这是可以这么去做的,这个东西无论是你用到了还是用不到,或者是你以后要用,这两个事简单的说一说,关于权限这个事

然后再往下看,如果你要做ORACLE的话,假如你以后要考ORACLE认证的话,那肯定会有两件事,要考你这个权限,传递和回收,在ORACLE这个权限一般用在什么地方呢,就是咱们开发写存储过程的时候,或者建立数据包的时候,package这个包,在ORACLE里面有这个概念,建立包的时候你得给他赋一些权限,当前的一些用户,都的有执行存储过程的权限,这个时候就得用到这些权限,一般来讲有两种,一个叫WITH ADMIN OPTION,WITH GRANT OPTION,这两个权限,你比如系统权限的传递和回收,配置参数就是这样的,如果你要给他ADMIN这个权限的话,就会有一个总结的概念,叫覆水难收,啥意思,你赋出去的权限再也收不回来了,那咱们可以看一下,看我这个操作,create一个user,创建了一个user,然后这个user叫tim1,我就不自己操作了,我觉得你们有兴趣的操作一下,没兴趣的就算了,创建了一个用户叫tim1,指定密码identified by,密码也叫tim1,create user tim1 identified by tim1;然后这里会有提示User Created也就是创建成功了,这样以后我这个tim1也就存在了,下面我做什么事啊,又创建一个用户叫tim2,然后密码也叫tim2,两个用户创建完毕以后create user tim2 identified by tim2;往下走怎么做的,首先system用户登陆去赋权,就是我说的system或者sys都行,赋什么权限呢,create session,能创建session,给tim1,tim1赋予权限给tim2,也就是现在有3个小孩,第一个小孩叫做sys,刚才我创建了用户,一个叫做T1,一个是T2,T1和T2,他们两个都是一个干干净净的一个用户的创建,然后我现在做一件事啊,我利用sys这个用户,就是系统用户,我做什么事啊,我把create session登陆的权限给了T1,当前T1这个用户,就能create session,就是能登陆,他就能登陆了,然后我利用什么啊,由于我T1有create session的权限,所以我T1这个角色去登陆,然后我去赋给第二个用户,叫T2,我给T2一个create session权限,叫cs,他们两个都有create session的权限以后,看一下我们怎么去做的,首先是grant create session to tim1 with admin option;我赋完权限以后还没完了,后面还多了一句话,叫做with admin option,这个就是一个权限的两种方案,第一种方案我赋权的时候有这种权限,然后success,然后我在grant create session to tim2;这个事情做完了以后,这个时候我的tim1和tim2都可以进行登陆,然后sys这个用户去回收tim1的create session这个权限,然后tim1肯定就不能登陆了,因为我已经把当前的tim1这个create session这个权限,登陆的权限给去掉了,但是tim2还是可以继续登陆,这就是一个覆水难收的一个概念,然后你发现tim1去进行登陆的时候,是不可以的,ERROR;但是tim2去登陆的时候是已连接,那这个权限总结,就是覆水难收,当前我这个用户给了tim1 create session权限,然后tim1再把这个权限给tim2,然后这个时候sys不干了,我想把tim1的权限回收掉,revoke回收掉,那么这个时候相当于什么啊,tim2还是可以正常登陆的,如果能够把tim2的权限也回收掉,那这个事就麻烦了,它是不能够这么去做的,理解一下就行了,你回家可以去做这个操作
还有一个问题就叫诛连九族,这个叫grant option,后面加上with grant,这是什么意思呢,scott这个用户赋权赋select权限给tim1,然后tim1赋select权限给tim2,就是我scott里面有一个emp表,然后就是T1和T2这两个小孩,都想去查EMP表,那就由scott去给tim1他赋权,然后tim1再给tim2赋权,都是select权限给他了,那这个时候我们看一看,首先是grant select on,emp这张表,to tim1,后面加上with grant option,grant select on emp to tim1;然后授权成功,授权成功的时候我使用tim1去连接的时候,我去查scott.emp,可以看到表的一些信息,select * from scott.emp;可以看到emp表的一些信息,然后我下面做的是什么啊,grant select on emp to tim2;这个时候是谁做的,是tim1把select on emp这个权限给tim2,然后我再利用tim2再去连接的时候,tim2照样也能查看到表的信息,然后我再次用scott用户去登陆,我把emp表的这个权限,tim1的权限给他revoke掉,就是tim1我不让他查这个tim1表了,然后撤销成功了以后,再次去登陆tim1和tim2,他们两个谁也都看不到emp这张表了,这个好像就是诛连九族,之前你给别人的权限,只要我一回收,这是ORACLE讲权限DBA里面会考的两个问题,一个是覆水难收,WITH ADMIN OPITON的时候,覆水难收,就是给出去的权限,只能回收一个,要不你就的一个一个的回收,他不会链条的集体回收,如果你想要做这个事情,那你就得用with grant option,授权的时候用with grant option,这个应该不难,大概能理解这个意思吗,很简单的是吗,这个是ORACLE里面权限的问题,加入你们用的都收ORACLE数据库的话,你们用的可能都是MYSQL,对这个不感冒,你们都用ORACLE数据库的话,日常工作中肯定会用到这些命令,比如我建了个Schema,定一下表空间,分一下配额,重新分配一下配额,然后再怎么样,然后我这个SCHEMA能不能看到这样一个表的数据,或者怎么怎么怎么样,肯定经常会去操作的,包括授权的时候,我给他什么权限

Oracle之用户操作相关推荐

  1. oracle 查看用户日志,Oracle查看用户操作sql语句以及数据库日志

    --查看日志文件 select member from v$logfile; --查看表空间使用情况 SELECT SUM(bytes) / (1024 * 1024) AS free_space, ...

  2. Oracle 登录-用户操作

    Oracle命令(一):Oracle登录命令 1.运行SQLPLUS工具 C:\Users\wd-pc>sqlplus 2.直接进入SQLPLUS命令提示符 C:\Users\wd-pc> ...

  3. oracle跨数据库用户操作,ORACLE跨数据库操作,DBLINK的使用

    ORACLE跨数据库操作,DBLINK的使用 前几天帮一个朋友弄ORACLE跨数据库的操作,共享下具体的操作流程: 一.不同IP的数据库(DBLINK) 本地数据库ip 10.56.7.26 远程数据 ...

  4. oracle用户数据库导错,root 用户操作 ORACLE 数据库导致悲剧

    接到同事请求,说客户的linux redhat 5.8平台部署的11.2.0.3 RAC 节点2挂掉了,报磁盘IO异常,数据库hang住 Fri Jun 14 12:01:22 2013 Thread ...

  5. Oracle XE版安装与用户操作

    文章目录 安装 安装Oracle数据库 Orace11g与Oracle 11g XE区别: 安装注意事项 Oracle 服务 Oracle中的服务 启动和停止服务 Oracle客户端 sqlplus客 ...

  6. oracle重启root,案例:Oracle报错ORA-15025 ORA-27041 root用户操作rac导致节点宕机

    天萃荷净 运维DBA反映Oracle RAC环境中节点宕机,alert发现报错ORA-15025 ORA-27041,分析原因为使用root用户操作rac导致节点宕机 接到同事请求,说客户的linux ...

  7. oracle 授权访问条空间,oracle创建用户和角色、管理授权以及表空间操作

    show user 显示当前用户 connect username/password@datebasename as sysdba 切换用户和数据库 和用户身份 Oracle登录身份有三种: norm ...

  8. oracle审计sys用户,oracle 11gR2启用对sys用户操作行为的审计

    oracle 11gR2启用对sys用户操作行为的审计 发布时间:2020-07-10 05:59:47 来源:51CTO 阅读:797 作者:lineqi 在oracle 11gR2中,缺省在aud ...

  9. 02【玩转Oracle】Oracle创建用户、赋予用户权限等基础操作

    开始之前,先了解一下一些单词,对今后看bug或者写代码有帮助. privilege权限:grant赋予xx权限:view视图:sequence序列:snapshots快照...(暂时想到这些,慢慢更新 ...

最新文章

  1. 【干货书】数据科学家统计学基础:R和Python实战
  2. python数据分析张俊红_关于数据分析我们来聊聊Python
  3. npm包全局安装和局部安装,执行包命令有什么不同?
  4. Linux下unlink函数的使用
  5. VIO-slam 系统构建
  6. python+robotframework_python+robot framework接口自动化测试
  7. Haybale Guessing (POJ-3657)
  8. java logging 格式化_Spring源码使用java.util.logging打印日志
  9. 0-1背包问题(多解)
  10. [数据预处理] onehot编码:是什么,为什么,怎么样
  11. 【bzoj3676】
  12. 【项目介绍】单发动机驱动的多旋翼飞行器及其控制系统
  13. GridinSoft CHM编辑器3.2.0多语言,轻松快速地翻译CHM电子书
  14. EXCEL:两列数据的重复和非重复值(顺序打乱)
  15. Nginx中传输带宽限制
  16. Spring学习笔记(一)
  17. 大型超市计算机管理系统论文,大型超市进销存管理系统的设计与实现
  18. 数据库对三大范式简单易懂的理解
  19. 网易微专业IOS开发工程师教程(完整)
  20. import torchvision报错,UserWarning: Failed to load image Python extension: Could not find module ‘C:\U

热门文章

  1. Mysql 去除 特定字符后面的所有字符串
  2. 基于DSP的汽车减震弹簧故障诊断仪的设计
  3. C#中string类型赋值问题
  4. Unity3D——C#编译到运行的过程分析
  5. Oracle创建表,并添加默认值和备注
  6. Sharepoint 2010配置form认证方式(SQL账号)
  7. 2016 中国互联网仿冒态势分析报告
  8. HTML/CSS/动画
  9. asp.net 获取ip的方法
  10. 将CLASS文件打包成可运行的jar文件