00:01
大家好,哎,在前面的这个11节当中,我们学习了Oracle和基本的这个思后语句的学习啊,为了大家能够更好的掌握这个思后语言,以及在这个企业面试当中,关于这个数据库操作的这些语句的这个更好的一个执行,我们这里呢,给大家多讲了三节内容补充的哎,一个叫控制用户权限,Set运算符以及叫高级子查询。那么这三级内容加上我们前面讲讲的这关于SQL语言的11个操作,这些11个操作整个呢,可以说我们关于circle的学习就比较完整了啊,内容也比较充分,并且呢,我们在讲这11节circle的操作之前,也讲了关于Oracle数据库的安装配置。以及说我们安装配置完以后,通过一个叫企业管理器的这样一个呃,CS架构的一个窗口,对数据库的基本的这些用户进行一个管理。
01:04
这是我们整个之前讲的这些内容,那么这三节的内容我们讲完以后,哎,大家能够对这个SQL语言有一个更好的一个学习,或者说这三节如果大家这个不学习的话,我学习完刚才的这11节,大家也完全可以再继续进行我们的叫PLSQ的一个学习。啊,PLSQ,通过它我们要学会如何能够写一个,哎存储过程,存储函数,哎触发器等等这样的操作都需要大家来掌握。啊,那么我们就接着我们今天讲控制用户权限,讲这一节的内容。其实这些内容对大家来讲呀,并不是太陌生,嗯,那么我们这节主要要讲什么呀,大家你看一下本章的一个学习目标,通过这一章的学习,我们要学会如何来创建用户。如何创建角色以及使用叫grant和revoke语句赋予和回收我们刚才这个赋予用户的这些权限。
02:07
然后呢,创建数据库的连接,哎,这些操作呀,大家你看到以后,实际上不太陌生,因为我们刚才也看到了,在数据库讲完以后,有一个叫数据库管理。那已经给大家讲了,那么数据库管理这一块,我们就是通过这个叫企业管理器来实现的。这吧是吧,企业管理器,我们以管理员身份来运行它。这是这个操作界面,然后我们现在要登录的是or CL这个数据库。用户名口令,这个呢,我们可以使用系统用户system,嗯,也或者呢,我直接就是以DBA的形式来登录确定。登录好以后啊,我们当时都讲过了,在安全性这一块有用户角色和概要文件,对吧,这样我们讲这些内容之前,先稍微简单的花几分钟的时间给大家讲一讲我们当时都怎么来操作的。
03:10
这是我们整个数据库在我们安装完以后,默认提供给我们这样一些用户,对吧?像这个呃,System是属于系统用户,我们之前关于SQL语言的学习都使用的这叫SC的用户,我在这个SC的用户下面创建了好多张表,对这个表来进行的一个增删改、查、创建表等等的一些操作,对吧?那么如果我们要新建一个用户的话,或者说公司当中又新来了一个跟数据库相关的一个人,给他创建一个用户付给他,那我们就只需要在用户这一块,嗯,给他创建是吧,第一下没有再来一下。这是一个bug哈,然后创建,创建呢,你要提供这个用户的名称以及口令,好,这里边儿这个名称呢,我们就叫艾特硅谷。
04:04
它默认都是大写的,这个你不用管啊,大小写是哎,这个都可以的,忽略的口令,我这儿呢就还使用叫艾特硅谷,然后这里呢,有一个叫概要文件是吧,概要文件当时我们也说了,呃,我们选用默认的,它里边设置了关于你这个,哎,比如说密码是这个这个呃,输入错误以后多少次锁定是吧,以及这个锁定的时间,或者跟这个CPU的一个访问交互的一个信息,都是通过盖要文件来进行描述的。下边呢,还有表空间,哎,默认呢是使用叫user表空间啊,这个表空间相当于给我们分配你这个用户创建的一些呃表啊等数据库对象,那么真正存储在硬盘里边,给它分配多大的空间,就是表空间来定义的,未锁定好创建。这里呢,我们这个用户就创建好了是吧,创建好以后啊,我就可以。
05:05
在这里使用这个plq developer来登录了,来,我们双击登录。如果你登录不进来的,大家你以管理员身份运行啊,然后这呢,我就可以使用这叫艾硅谷登录我们的or CR这个数据库。大家看到现在我是不是已经登录进来了呀,是吧,我登录进来以后啊,按说我这个时候如果想创建一张表的时候,大家应该知道它不一定有这个权限是吧?那有没有啊,你可以在这个企业管理器这来查看怎么查看我双击艾特硅谷用户,我们当时讲课的时候是不是分别的将这个叫系统权限,哎,角色对象限额都给大家来说有一个说明是吧?都给大家讲解了。系统这一块就定义了我们大概能有100多项的系统权限。
06:05
能有100多项的系统权限,那么这些权限相应的你哪些需要这个用户所具有,我们就付给他是吧?然后这个角色呢,就是我们把相应的一些权限,系统权限,或者这个对象的一些权限付给一个角色,然后将角色付给一个用户。对吧,这个我们当时都说过了,你看我们这个艾特硅谷用户,我默认我创建好以后,他默认提供给我一个叫connect的一个角色。是吧,Connect角色,那这个角色都有哪些系统权限或者对象权限呀,那你只能是在这看,在角色这找到叫。Connect是吧,然后你看看他的这个信息,他没有再有其他的封装角色了,有系统。就像这也没有,那就相当于这个角色就封装了一个系统权限,叫create session。嗯,Create session,那么这个权限是做什么用的呢?实际上是这个功能哈,当你给一个数据库对象赋予create session这个权限以后,我就可以通过你赋予权限的这个用户来登录相应的数据库了。
07:15
相当于就是一个登录的权限,对吧,也就意味着当你不付这个create session权限的时候,它是登录不了数据库的啊,就是这个意思,那么我们现在如果想创建一个表的话,那就是create table,我这里随便来做一个命名。啊,ID number类型的十个长度,哎,说权限不足对吧,因为我们这里并没有将创建表的权限付给爱推股这个用户。所以说我们得回来。后来在这我们找到这个叫create table,或者说叫create any table都行。对吧,找到以后啊,哎,这我们不能在这是吧,不能在这这个角色呢,是Oracle系统它默认提供的这个角色叫connect,你要要么你就是可以新建一个这个角色,嗯,你最好不要对他默认的这些角色进行一些修改,是吧,所以我们直接在这个用户叫艾硅谷这增加一个create table的系统权限。
08:23
给它加下来应用。运用好以后我们再回来,这时候我再来创建应该就没有问题了,是吧,但是他现在大家看到了,又提供了一个异常,叫对表空间user无权限。对,它没有权限,我们当时说了什么意思是吧,就是因为我们回来你在这个爱购用户这,你看它是不是默认的表空间叫user,但user这儿的限额你看是不是无望。就相当于这个时候并没有分配任何的这个空间来给我创建这个表使用。
09:02
那你得分配点空间吧,诶你可以选择叫无限制,就是没有限制,你想用多少都行,也可以给它有一个限制。比如说我们这里。用多少兆,我这里分配给你五兆,得根据实际问题的需要啊。我这里分配了五兆给我IQ这用户的user表空间,我应用好了,应用好以后我们再回来执行刚才那个操作,哎,这里的这个表就创建好了是吧,那你select from emp进入一个空表。啊,这表没有任何数据,你也可以进行增删改的一个操作是吧。这是我们在这个数据库,Oracle数据库安装完以后,给大家讲的Oracle数据库的一个管理,那么这一节相当于我们通过诶这个命令行的方式来实现我们刚才的这样一系列的操作。
10:00
那一系列的操作,刚才呢,相当于是图形化界面的方式,非常好理解是吧?那如果没有图形化界面,我们就需要使用命令行的方式。啊,命令行方式好了,那我们先看一下我们这个课件。嗯,这课件呢,首先提到了一个叫权限,权限呢说数据库的安全性分为两个,一个叫系统的安全性,一个叫数据的安全性。嗯,我们安装Oracle数据库的时候,给大家提到了,说Oracle叫数据库管理系统,对吧,分成了两块,一个叫Oracle数据库,一个叫Oracle实例啊,大家你回忆一下,呃,我们有也有课件啊,课件上都有,那么Oracle数据库你可以理解成就是,呃,你要想保证这个数据库这个整个这个安全性的话,那就分为这个系统的一个安全性,就对应的叫Oracle数据库。那么2AC10里实际上就对应了一个数据的安全性是吧,你得保证这两块的安全性才可以。啊,然后下一个提到权限,我们这里分成叫系统权限和对象权限,就是对应着我们这里的这系统权限和对象权限啊,那系统权限就是对于数据库的权限而说的,对象权限是操作数据库对象的权限来提的。
11:14
那么这个数据库对象有可能还是别的用户的是吧,我可以将别的用户的某一个权限付给他,比如说哎,我们将这个高的用户。嗯,Scott用户里边有很多表,其中有一个表叫employees,把这个表的select权限付给at Google用户应用,那么我们在at go这个用户这就可以进行一个查询,是吧?Scott用户的employees。就可以了,你要是想查询别的表那是不行的,因为这个权限没有给你是吧?啊,这就不行啊,这是我们讲的系统权限和对象权限,那么系统权限这一块说了,一共大概有超过100多种有效的权限啊,这这这都能看到是吧?有100多种这个权限,呃,数据库管理员叫DBA,它具有高级权限,已完成管理任务。
12:18
嗯,具有高级权限,你看我们刚才这是就以这个DBA来登录的是吧?诶DBA登录的话,我可以是不是创建用户啊,你可以创建用户,也可以创建角色,还可以创建盖文件啊等等,甚至说存储里边表空间也可以来创建。所以说这个DBA的权限是很高的啊,DBA权限很高,同时呀,这个DBA,呃,实际上它也是一个角色啊,大家可以看到在角色这一块是不是有DBA啊。是吧,那如果你把这个爱Google用户把它增加一个DV的角色,那这哥们是不是就现在权限就很高了是吧?爱购这个用户的权限就非常高了,嗯。行。
13:01
那么这个dva的权限都有哪些?比如说创建新用户,删除用户删除表、备份表等等。啊,这是我们的它的系统权限。那么下面就是我们今天要讲的,我如何通过命令行的方式来实现刚才我们在这个控制台的这样一些操作,那首先呢,是不是我们就要学会如何通过命令行的方式创建一个用户吧?是吧,通过命令行方式来创建用户,创建用户DBA使用的叫create user。这个呢,不陌生吧,什么叫不陌生?我们前面讲创建表是不是叫create table,创建视图create view啊,创建序列create sequence。那创建用户呢,就是create user是吧,然后多一个就是因为每一个用户都需要提供一个密码,所以说用的叫in identified by,就是通过哪个来识别,就相当于是提供给我们这个用户的一个密码。
14:01
好了,那我们这里呢,通过这种方式来创建一个用户。创建用户的话,你现在爱特酷股它不是一个DBA,所以用它创建是不可能的,我们这里用谁呀,诶Scott用户是不是也不靠谱,SC用户他也不是个DBA是吧,你在这都能看到。你看他没有,那你用谁呀,你看看这个system。它是不是一个DV啊,所以说这个system是可以来创建的,那我们把这个SC给它关了。还有一个。用system来登录or CL?OK,这是season登录完以后啊,我现在来创建一个用户create user,起个名字艾特硅谷零一。这是用户,每个用户要提供一个密码,叫identified这个单词啊,需要大家掌握,Identified就是识别是吧,识别码等等的都是用的这个单词。
15:11
Identified five提供一个密码,我这用跟他一样的回车。是不是就创建成功了呀,那创建成功以后,你可以在这扫一眼是吧,我们也仅仅是为了仅仅也就是看一下啊,你看在这是不是多了一个叫艾501是吧,说明我们通过命令行的方式创建成功了,那创建成功以后,我们首先想到的就是我来登录一下是吧。我们试图使用我们刚才创建的叫艾特硅谷零一这个用户来登录。OK。大家看到是不是不像我们在命令这个这个图形化界面的方式,创建完以后就能登录了,你看这进不去它提示的错误说,哎,缺少这个叫create session的这样一个权限,登录被否定了。
16:02
我们刚才那会儿说到了这个credit session,就是来登录的是吧,说明你这个用户现在没有这个权限。来,我们在这儿看一下,是不是真没有,刚才我们创建的艾特硅谷啊,你看着它这是有一个角色,这个角色里边有这个权限是吧,相当于它就有了,而这个艾特501啊角色你看这默认的通过命令行的方式默认的情况下,没有给我提供一个connect的一个角色。那系统这大家看到也没有对象,这这也没有,所以说你肯定是登录不进去的是吧,登录不了数据库的,那怎么登录啊,是不是相当于你得赋予我create session这个权限吧。那赋予这个权限怎么来操作呀,我们看这。用户创建完以后,下一步叫用户的系统权限,那我们下面就来讲如何来赋予系统权限,那我们首先得看看有哪些权限是吧?常用的一些权限,以应用程序开发者为例,一般你得具有这样一些权限,首先你就得能登录啊,叫创建绘画,其次呢,创建表序列视图存储过程,这个我们在PL4课当中会给大家讲。
17:14
这是常用的一些创一些权限啊,你得具有这些权限,那么这些权限如何付给新创建的用户呀,我们使用的这个命令叫grant,哎,哪一个权限to哪一个用户。Grant,哪个权限to哪个用户。这个grant你如果翻译过来的话,就叫做授予,哎,翻译过来就叫做授。这有很多大家学习这个编程的是吧?呃,不是说编程本身难,而是啥呀,他总觉得这个英语对他是一个比较大的一个限制啊,觉得自己英语不行,嗯,说实话哈,这个英语啊,嗯,当然我刚开始学的时候也会有一种莫名的恐惧啊,因为你毕竟不认识是吧,单词都不认识,更别说这个单词它如何来给咱们拼到一起进行一个操作了,但你真正开始接触以后啊,你就应该有这样的感觉,它无外乎就是一个单词嘛。
18:18
甚至有的情况下你都不会念,你知道他怎么来操作都行。不像你大家,你上高中或者上大学的时候学习英语,我们说怎么算是英语能力强呀,你得听说读写都会,哪一个你都得会,而对于编程程序员来讲,实际上要求稍微低一点哈,你就只需要把它,呃,知道是干什么用的就行,你可以不会念,嗯,但你得会写是吧?嗯,这样就行,但是呢,呃,这是一个一般的程序员,你要是一个优秀的程序员,当然你还是得会念是吧。你不能一去面试的时候,Grant念成这个get啊,Oracle念成这个这个什么,嗯,这个还还or Oracle还拼还拼呢是吧,那让人家觉得你这个能力就特别低了,或者说基本的一个语言能力都没有。
19:06
这也是比较成问题的哈。嗯,大家你不用刻意的去这个背这些单词,或者说我先考一个英语四级,英语六级,我再来学开发,那也是完全不用的啊,你直接可以让他俩相辅相成,一边写编程啊,一边在促进你的这个英语的学习,作为一个计算机编程的专业。这都属于专业词汇了是吧,你可能一般的,你这个学习一般的英语,不一定会见到这些这这些有一些特别的词汇,它作为专业词汇来讲,实际上词汇量并不是太大,你学一学这个,包括大家看这个API是吧,你学学这个词汇量实际上是比较小的哈,你看上几遍以后就熟了,就刚开始的时候可能会痛苦一点,但是大家一定应该试着去看一些英文文档啊。这样显得自己比较高端是吧?这个单词叫做授予,相当于就是我可以授予什么样的权限给哪个用户,是这个意思吧?好了,那我们现在就通过这个命令行的方式,在system这个用户下,我授予艾501这个用户叫create session的权限,这样写grant是吧,Create session。
20:19
哎,然后互艾硅谷点一,这我就复议成功了,互议成功以后我们再来登录。S古里,还是这是吧,OK。大家看到是不是我已经登录进去了。是吧,我登录进去了,登录进去以后,你想在这个时候去创建这个表,是不是同样的这个情况下你会报错呀。因为你没有这个权限是吧,哎,再加上一个叫name,我插to类型的常见,哎说权限不足,这个我们很好理解是吧,因为你并没有赋予这种权限,那我只需要是不是在system这下给它赋予一下叫ground create table。
21:12
负F01负一以后我们再来这创建还是它。你看这时候提供的就不是说你权限不足了,我现在具有创建表的权限,只是说表空间没有权限是吧,那叫表空间没有权限,下一步需要做的是不是就给它这个表空间赋予一个值啊。哎,赋一个值,然后这个命令呢,大家你不需要掌握哈,你就看着就行,怎么负一啊。创建用户的表空间啊,或者叫富裕用户这个表空间,给它进行一个修改,我们使用的是这个名字叫alter user。前面我们讲表的时候,创建表叫create table,修改表是不是就alter,所以说用户也是一样,修改用户也是叫alter alter user谁然后叫qui,哎,Unlimited on哪个表空间是吧,On哪个表空间,相当于把这个用户的这个表空间给它设置成一个什么样的情况。
22:13
来我们先操作一下再说啊,先操作一下。那我仍然需要在system这个用户下,你不能够在二五零一下啊,它是没有这个权限来进行修改的,只能在system这个下。System,这下的话,Al叫at an user at,硅谷零一。Print叫哎,设置成多大的值,如果我写叫unlimied的话,就是没有限制的,就是多大的值都可以啊,那就没有限制,或者你要有限制的话说仅仅提供叫五兆,那就是5M。看啊,我使用的默认表空间是user,所以说就是作用在user表空间上,好,修改好了以后,我们再来艾特零一下,进行一个操作,开尔他。
23:08
大家看到这个时候,我们就创建成功了。是吧,这里没有啊,或者你从这个控制台这儿也能看到。艾特硅谷零一这个用户,嗯,看他的这个,嗯,默认表空间是user限额,这不我们刚才给了五兆是吧,然后角色没有系统权限有两个。是吧,有两个好,这是我们讲的这样一个内容,大家你要给他掌握我们刚才这样一些操作呀,大家注意到是不是都是在这个,诶叫system这个具有DBA权限的用户之下,是吧?诶只有这个用户系统用户他才有权限创建表,哎不是创建用户,然后给这个用户赋予一些权限。啊,甚至说我改变你这个用户的一个这个表空间的大小都得是在这个system下的,你想在这个S购零下是不行的,比如说你想啊,是不是叫al user,嗯,我们更改一下表空间啊,Al user at特硅谷02PRINT,嗯,我给你设成一个unlimited on user的空间,你看。
24:26
是没有这个权限吗。哎,这个是大家需要注意的,你是不行的啊,但是你哪个行啊。哎,你干什么行啊,你你要说你想改改你自己的密码,大家想行不行啊。这个应该是可以的是吧。就像大家你你去工作以后,工作以后的话,然后正常公司里边都会分配给每个人一个,呃,企业邮箱,这个企业邮箱本身是没有你的,然后你进去以后,这一个数据库管理员或者公司的一个专门管这个邮件这一块,他会给你分配一个用户名和密码,那就类似于我们通过系统用户来创建的一个用户名和密码一样是吧?然后给你以后,他告诉你的用户名是什么,密码是什么,然后你是不是就可以修改呀,而且建议大家你第一个先做的事儿就是把你用户的密码给改了是吧?那就是说对于本人来讲,你改改你的密码是没有问题的,但是你不能改,你说我这个邮箱大太这个大小太小了,我自己改一下,那你没这个权限,只有数据库管理员才有是吧?
25:29
那么改一些密码怎么改,我们在艾特GO01,就是你本身这个用户项,你看啊,哎,我就要al user艾特硅谷零哎零一是吧。我们这是零一哈,刚才这会儿写错了。哎,这会应该写零一,但是你看那个问题还是照样报的是吧,权限不足啊,Auto user at,零一,然后呢,还是刚才那样的操作,I identify by,我就写at硅谷。
26:02
是吧,你看是不就可以改啊,就是你自己是可以改密码的啊,但是你要想分配这个表空间是不行的啊,这个是需要大家去注意的,好这我们就相当于把这个事给说清楚了,来,我进行了这个操作了,那下一个操作就是我们来说说这个角色,来说说这个角色,刚才我们说了哈,我创建IC库这个用户,哎,我可以是不是额外的在创建角色,或者利用系统提供给我们的已经存在这样一些角色,是不是赋予我这个用户啊。是吧,我这个用户就有一个,呃,Connect一个角色啊,那么角色的作用啊,我们也当时提了,是不是就这样啊,你要是这里边有几个权限的话,现在要分别赋予这几个人挺麻烦的,那你需要分别把每一个权限付给每个人,就得是这样操作一遍。是吧,这一共相当于操作了12下了啊,那么如果有角色的话就很好办了,比如说这里就有个角色叫manager,这个角色就有四个权限。
27:05
那么谁是manager?我不,谁具有这四个权限,我就相当于把manager付给谁就完了。相当于是对已有的权限,这个权限包括系统权限和用户的这个对象权限,我把相应的系统权限和对象权限都封装在manager这个角色里,把这个角色付给这几个用户。你看这个操作瞬间是不是清晰呀。就清晰了,这是我们说的角色的,哎,这个作用,然后我们如何通过命令行的方式来创建角色呢?就这样,你看创建角色叫create,入入是不是就角色呀。哎,入就是角色啊,Create入就是创建角色谁,然后呢,我们把这个,哎这个相应的一些权限付给这个角色,然后再把这个角色付给哪个用户。
28:02
是吧,就是这样来操作的啊好了,那我们这儿呢,当然这个前提你还得是在这个system这个用户下啊,我们在这儿来创建角色叫create rule,这个角色创建什么,我就叫my rule得了,创建好了。那么创建好以后啊,实际上你在这儿可以看,想看的话,你可以看一眼角色这。看是不是有个叫Mar啊,而且这个时候你看这都是空的是吧,这是空的哈,行,那我创建这个角色以后,我给这个角色赋予相应的一些权限来grant create session,保证你能够登录,然后create table,再加上一个create view,然后呢,To my room。
29:01
我就把这样三个权限啊,付给了这样一个角色,那你再来看。那是不是就多了三个权限是吧,三个系统权限啊,有了这个权限以后,那么这个角色啊,就有了他自己的一些功能啊,我把这个角色付给某一个用户,那这个我就付一个新用户,那我就再创建一个好吧,Create,哎,这个叫user at硅谷零二。I five艾特硅谷零二。啊,创建这个用户,创建好以后,我现在叫grant my room grant还是叫授予,我把这个角色授予艾特硅谷零。授予成功对吧,授予成功啊,这个授予的话,就像是这个大学的校长是吧,正常呢,我们说这个大家大学毕业应该叫学士毕业,学士毕业以后,哎,应该是怎么着,仿着西方一样是吧,像我们这个学士啊,硕士啊,博士啊,都是仿照人家西方这个称谓的,哎,校长穿着这个校长服,然后呢,把你的这个这个学士服戴个小帽是吧,把这个嗯。
30:23
这个滴下来,这个穗给你往上一掰,就说明你这个已经学士毕业了啊叫grant授予你的一个学士毕业的一个这个这个证书是吧,叫ground ground他付给了他,那么现在他就具有一个角色,就叫MY入的一个角色,来我们以my at google02登录一下。零二哎,我这里登录的时候哈,刚才我们艾特个501,刚才创建以后啊,登录不进去,因为你这里边没有session是吧,现在我登能登了,因为迈入这个角色里边封装了这个权限,同样的道理我还可以是么?创建这个叫table啊是吧,但是创建table这个时候的问题就还是表空间的事是吧,我们是看看啊,看看他的报的错就知道了。
31:25
你看这时候他提的是表空间的事,而没有提那个叫没有权限,说明create table的权限是有的是吧,那你就这时候调一下表空间就行了哈,就al user,然后这个这个嗯。AT502,然后quita,哎,多大的空间,然后啊,User这我们就不操作了,嗯,不操作了,这就说明至少你这个权限是有了啊,你可以在这是不是可以看呀。我们找到用户艾特零二,你看角色就有他,哎,那这个角色里边有哪些权限,是不是你就在这个角色这来看。
32:01
刚才已经看了是吧,相当于它就具有了相相应的几个叫create的一个权限啊,这是我们说的这个事。嗯,说的这个事,那下一个的话,我们说了角色了,说了系统了,下一个是不是就要说这个,哎,限额也说了是吧,限额也说了,下一个就是对象呗,啊对象我如何将其他对其他这个用户的一些,呃,数据库对象的权限付给其他的一些用户。哎,我们这个叫对象,那么对象这一块呢,我们先看一下PPT。哎,这是修改密码的操作哈,修改密码用户本身就可以进行操作。嗯,这是相应的对象的一些权限,嗯,增删改查插入啊,连接呀等等的,嗯嗯,这是数的,这都是数据库对象是吧,这我们就过了啊。对象的权限,不同的对象具有不同的对象权限是肯定的了,嗯,对象的拥有者拥有所有权限。
33:00
那就意味着对象的拥有者就可以他自己向外来分配权限。啊,他自己可以拥有分配权,因为这个对象就是他的是吧,这个对象指的是什么呀,就是我们的数据库,对象表啊,视图啊,序列呀,索引呀,同义词啊,都叫对象。哎,就是我们前面讲的是吧。哎,这个对象大家经看了哈,它的拥有者可以向外分配权限,那意味着是不是说我们SC的用户,我们这没有SC用户啊,这个SC用户。它有相应的一些数据库对象。是吧,它对象有哪些,我们都知道什么,那那一堆表吧,它就有这一堆表。啊,这显示出来他自己哈。换一个用户。就是2501。对象找Scott。SC的用户,你看他有很多表,嗯,也就是说他自己可以决定我把这个表付给谁。
34:00
是吧,这个表的这些权限付给谁?当然了,哎,你作为这个DBA的system用户,也可以有这个权利把这个权限付给谁。啊,但是至少我们说明这个数据库对象的拥有者,他自己就可以有这个权限,不一定非得要使用这个系统权,系统用户是吧,来做这个事儿,那么怎么来分配,大家看这个操作叫grant,嗯,一个什么一个操作,嗯,On哪一个数据库对象,然后给了谁。是这样理解吧,最后呢,还有一个叫with grant option,这个我们一会说什么意思啊,这里有一个举例,有个举例比如说我们分配这个表叫employees的查询权限给了这俩人,那就是grant select的权限,关于employees这个表的,然后赋予给书和rich这样两个用户。是吧,比如说你要分配更新权限,那就grant update啊,哪个用户的哪一个表,然后给了谁,是这意思吧。
35:07
来我们操作一下,哎,操作的话我们说了既可以在系统用户,这也可以在SC的用户,你本身是吧,那我们假设如果在系统用户这怎么操作就得这样啊,嗯,还是叫ground授予是吧,授予什么权限呀,比如说是一个查询的select grant select,或者你说再加一个权限,那你就在这加个逗号update。嗯,啊,哪个表,Scott用户的employ表,然后给了谁叫to at硅谷零一给了他了。对吧,给了他以后我们就可以在艾特硅谷零一这个用户之下,我select看啊select星from高的用户的employees,诶写错了是吧?哎,这是一个查询,刚才是不是也赋予了一个叫什么呀。
36:15
是不是update呀,意味着可以修改是吧,可以修改啊,那修改一个我们试一试。Update update用户的。Employees这个表,Set,比如说我们把这个人,最后这个人啊,把他这个名给他改一改,Set last name等于abcd给他少一点,然后呢,Where。Employee ID等于206是吧,我进行了一个update改了,刚才这呢,我们看到了,这就是纯粹查询的是,嗯,Scott用户的employees它没有复制过来哈,他还是调用的,原来人家SC的话SC的,那你大家说我这个更改是更改的,有没有把SC真正的这个表给改了呀。
37:13
应该是改了是吧,因为你是不是把这个权限给了我了呀,那我就能改,我改谁呀,改了是不是就是你的呀。那你怎么证明啊,我们用SC用户登录一下。登录了,登录进来以后我来查询一下不就知道了吗?Like的星from,不好意思,大家看。诶,这个没有改哈,呃,为什么没有改,我这儿是不是还忘了一个操作。爱古里。吧,对吧,比较。再来。大家看是不是已经修改了呀,哎,我得commit提交一下才行啊,这就是你修改过的说明,确实我可以通过其他用户来改,原因就在于你把这个权限付给了SC个股零一了。
38:11
这个权限呀,不是这个SC用户自己付给的,是system付给的,因为system这个是系统用户,他的权限很高,他能够决定,诶把某个人的权限给了另一个人是吧?嗯,是这样的意思,当然SC用户本身也可以来决定这个事儿。他自己可以决定,因为你本身这个东西,数据库对象是不是都是你的呀,所以我可以自己来决定,比如说grant select的这个权限,嗯,关于嗯这个吧。Employee这个表的我付给谁呀?不艾特硅谷零二,给了艾特硅谷零二,然后呢,我艾特硅谷零二,这是不是就可以来进行查询了?Select from Scott用户的,不好意思。
39:03
就可以了是吧,你要想不查employee,查询他的departments,这就查不了,因为我没有给你这个权限是吧,我要给的话,我还得在这儿来付给你。啊,比如说啊。Departments给了你。哎,然后呢,给了你以后,你就可以来进行一个查询了。是吧,哎,这就是我们说的这个关于对象权限,也就是对应的我们这里的。这个内容叫对象权限是吧,这里给了他,给了他,然后我们这里边啊,这个内容就说到这儿了,然后后边还有一个这叫授予选项,授予选项包括这个系统这块也是有这个是吧,也有这个叫选项管理,这我们是不是给大家当时讲数据库管理的时候提到过一下这个叉呢?哎,对应的这个叫勾,它俩有什么不同。是吧,这个叉表示说他是不是没有权限再授予别人了,是吧,而这个勾呢表示,诶这个叫at go01这个用户我一旦有了create table的权限,我还可以把这个权限授予别人。
40:12
哎,或者说这个对象这你具有select和update score的用户的employees这个表的一个权限,但是这个权限打叉就表示你不能授予别人。那打勾就是你还可以再授予别人是吧?是不是有点像这个方法是不是可以被你的子类继承与否,是这意思吧?如果你可以让子类去继承,就相当于是一个勾,哎,不能呢,就是到到此为止,你就是你不能再找你的子类去实现这样一个方法了,是吧?此类是不能的。那这呢,就是你不能再授予别人了。嗯,就像你大学毕业生一样,每个大学毕业生校长赋予了你一个权限,都是叉是吧,不能说校长这个授予你这个学士学位的权限,呃,学士学位的一个一个能力,然后你呢,把这个能力又给了别人,你成了不办证了,对吧?嗯,行,这个呢,我们说一下这个操作勾的话,默认的话这个都是打叉的,那要想把它变成勾,我们通过命令行的方式怎么来写。
41:15
就是这个。With grant option。啊,With grant option,这个呢,就是说我可以是这个用户,同样具有分配这个权限的一个权利,啊,分配权限的一个权利,我们举一个例子。大家你看这时候,嗯,这个艾特购物零一这个用户只有这两个权限都是叉是吧,都是叉好了,我现在给他增加一个权限,我随意的在系统用户这给了grant select的一个权限啊,Scott用户的。Departments,大家你看到我要是在系统用户这就一定得显示加上这个SC是吧,你要SC用户本身来赋赋予其他用户的话,就不用加大自己这个就可以省略了啊。
42:08
他自己这个department这个权限付给at硅谷零一,然后叫with grant option。就是相当于你具有授予的一个行为,就相当于你可以给别人了,有了有了以后大家你看这个命令行,这。关了,重开。大家看这时候是不是多了一个关于department操作,而且是可以授予别人。是吧,可以授予别人,那意味着就是我可以给别人这样一个权限啊,给别人这个权限的话,嗯,我给谁啊,给艾特硅谷吧,给这个用户吧,你看他这个对象这是没有的是吧,我给他啊给他我们这样来操作,你在艾特硅谷零一下来操作。
43:01
这个叫希腊。嗯,啊,告用户的departments to at硅谷。给了,给了以后你再看一眼。对象大家看是不是有了呀啊,那你是不是默认的,还是不能给别人的是吧,然后你再进行一个查询,这肯定就行了呀,嗯,在这个艾特Google用户这查。Like新from Scott用户的department,哎,就有是吧,哎,就有这个权限你可以付给别人了,就啊对应的我们这这叫with ground option哈,对应的还有一个叫public public就是公共的吧,就是我们Java里边那个public权限修饰符是吧,我可以将这个权限关于这个用户的这个表的给了所有人。
44:05
给了所有人叫to public。那这个意思,举个例子,我们SC的用户还有一些表。哎,比如说里边有一个是不是叫这个jobs啊,这个这个吧,Locations是吧,Locations表查询一下,哎,这是location的表,然后你要是在其他用户下查,所以这个比如艾特购02SELECT from sc用户的叫locations表,你看是不是肯定查不了对吧,因为是无效的,但是呢,我只要是给他分配一下就行了,叫grant select,嗯,别的权限你要想给他加,比如update也行啊。嗯啊,他自己的locations这个表,To public to public是不是给所有的用户啊,他给了所有用户以后,然后你再回来看,我现在呢,还在艾502这边进行一个查询。
45:19
这写错了是吧,这写错了啊。这能查找是吧,能查到之,我们换一个I501DIRECT星from Scott用户的locations,你看是不是也能查着了,你在这个S购这也行。哎,能查到,说明你确实把这个查询,嗯,这个叫location,这个表的权限给了其他的所有人。嗯,给了其他所有人,那你在system这这必然可以查是吧,他这个权限比较高,你不赋予我我也能查,哎,不光能查,我还能够赋予别人,对吧,因为他是个DBA啊。
46:08
哎,那么最后呢,我们还有一个操作,就是最后一个。嗯。这个这个我们等一下再看哈,还可以收回对象的权限。收回对象的权限,我刚才把这个权限啊给了你啊,我现在还可以收回,哎,收回用的什么叫revoke revoke是收回是吧?Revoke叫收回,比如说这个校长这个给你颁发了学士学位,结果发现你这个学分没收够哈,诶,学校长还可以收回,叫revoke。收回哪一个权限有增删改查,哎,关于哪哪一个数据库对象的,从哪一个用户里边是这意思吧,从哪个用户里边,比如说举个例子啊,我艾特硅谷零一下,它有哪些权限,我把其中某一个给他收回了,怎么来看呀,大家你看这个命令。刚才这这里边儿提供了一些叫数据字典的视图,其中有一个这个大家了解一下就行啊,哎,用户拥有的关于表对象的权限。
47:10
点对象的权限,那我们就看着它CTRLC。我在艾特GOOGLE0一下看一下select星from at,硅谷from尔微。哎,我们能看到哈,这个艾特购零一这个用户拥有哪些对象权限,是关于这个Scott用户的这两个表的这样几个权限。哎,是不是有这个呀。是吧,有这个你现在进行查询没有问题的,Select from Scott用户的叫嗯,In,不好意思能查,现在能查是吧,我现在给你收回,收回的话我在SC这可以操作,在system这也能操作啊,随便选一个吧,在本身这个人这啊叫revoke select啊。
48:07
这个叫employees是吧,From cat to读in收回,我从你这把这个权限收回,收回以后你再来进行这个查询。嗯,要权限不足是吧,你现在就查不到了,你在这也能够看到,现在呢,你这个艾零下的对象权限这就少了。就没有操作employees那个权限了,因为我收回了。啊,就是这个意思,相当于你是看这些权限是不是在这个图形化界面也行啊,但是你要不用图形化界面的话,就得用它。啊,通过它你还可以查看用户拥有的系统权限。啊,系统权限,举个例子,CTRLC随便找一个ID502。嗯,Direct from座位。啊,这没有是吧,没有什么系统权限,那他因为我们是不是把那个角色叫麦入付给他的是吧,角色里的权限,你这个那就是角色里的没有在他这儿再换一个人。
49:10
嗯,他吧,这它有它有创建表,还有这个create session权限是吧。嗯,这个也说你不可以再授予别人了啊,这是我们说的这个内容,那么这个内容说完以后,我们关于这个这节的啊,叫控制用户权限,实际上就讲完了。那就讲了,这是一个举例,最后总结一下。创建用户叫create user啊,创创建角色叫create rule rule,我们可以把这个角色啊,或者说这个系统权限通过grant形式付给你这个user。哎,当然我还可以来修改这个user,能修改哪些内容,修改你的密码,哎,给你,诶,分配一下表空间,都是用的这个命令是吧?然后相应的我们还可以给你赋予的这些权限,Revoke,这里的revoke跟grant就是一对反义词是吧?它俩是一对反义词,相应的这它标注的哈,创建用户只能由哎,是不是DV来完成啊,那这个create rule也得是由它。
50:19
当然你这个赋予权限,赋予,尤其是赋予对象权限,你可以由这个呃赋予哪个数据库用户的,嗯,什么权限给另一个用户,前一个那个用户是谁的对象,他也有ground的一个呃权限是吧,如果是系统权限的话,当然还是得有这个DBA来分配的啊。这就是我们这一节的内容啊,就讲到这儿就讲完了,嗯,然后呢,我们看一下这个这一节的这个练习题啊,大家你把这个都操作一下。就把刚才讲的这些,你你都操作一下。嗯。
51:01
来,我们说这个练习题。来说练习啊,第一个这里一共有五个题目,第一个如果用户能够登录到数据库,至少需要哪种权限,是系统权限还是对象权限,这个我们是不是讲了呀,这个操作呢,叫create,哎哎,不是你需要哪种权限session嘛,是吧?哎,Session这个权限它是一个系统权限。系统权限好,下一个创建表需要哪种权限,创建表的话呢,就是嗯,Create table。这叫创建表的权限啊,这是一个也是系统权限,对吧,我们讲系统权限大概能有100多个啊,Create或者create any table都行。
52:03
将表departments的查询权限分配给用户,他这是一个哎,对象权限吧,啊对象限上面这两个是系统权限啊,对象权限分配给他grant。嗯,Grant的select的一个权限啊,哪个表department这个表给了谁。To sister给了他是吧,哎,Grant哪个这个哪个操作啊,哪个表的to,谁下一个从这把这个权限给它收回,把刚才你分配这个权限再收回,对应的我们用的叫revoke,对吧,Revoke select。嗯,啊,Department这个表。
53:01
From,嗯,来把这个权限收回啊,下一个创建角色叫DVP,并将如下的权限赋予该角色,如下的这几个权限赋予该角色。好,来创建一个角色,只有系统用户,呃,不能叫系统用户,只有DBA啊DBA,谁是DBA这个角色的用户才可以创建角色。Great,嗯,Rule这个翻译过来叫角色啊,我不用的是actor啊,演员不是actor,是rule,叫DZP创建它一回车就创建了,是吧,这是第一步啊。然后第二步创建好以后,把相应的这样一些权限赋给这个角色grant great。
54:03
这是什么呀?这叫存储过程啊。Procedure,然后create。Session create table创建表。嗯,然后。Create sequence序列,Create view视图,嗯,给它付给谁?To,换一行to,这个dbp给了他,那么现在这个角色就具有了这样一些权限,然后下一步哈,你可以把这个角色是不是付给哪个用户是吧?Grant dvp two啊,比at go01 at02就行了。这是我们这一节的这个练习题,相应的这些操作,我们在之前的呃,关于数据管理的时候,用这种控制台都进行过了,那大家呢,你如果有精力的话,那你就把这个命令行的方式怎么来实现的学习一下,然后自己要亲自实现一下才行啊,不能光看啊,亲自去做一做,行,我们这一节呢就讲到这儿。
我来说两句