Oracle 11g系列—2—用户管理
---------------------本期目录导航------------------
一。为什么要学习Oracle
二。SQL *Plus工具的使用
2.1打开SQL*Plus工具
2.2启动SQL*Plus
三。用户操作
3.1默认用户
3.2创建用户
3.3授权(grant)
3.4收回权限
3.5修改用户密码
3.6 删除用户
四。Profile管理用户口令
4.1账户的锁定
4.2给账号解锁
4.3终止口令
4.4口令历史
4.5 删除Profile
一。为什么要学习Oracle
我们学习一个东西第一时间,肯定是问我们是否有价值学习这个东西?好吧,我从网上收集了些资料!~整理了如下表格!~可以看红色的部分,红色表示Oracle的特性,由此可以看到,在这7个部分中,除了操作这里除外,其余的地方均比其他的数据库有的一拼。
二。SQL *Plus工具的使用Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。
2.1打开SQL*Plus工具在开始菜单。。
这里就是SQL*Plus的界面了!~。输入用户名和密码就可以登入 进行操作SQL语句了。使用这个SQL*Plus工具,可以大大提高我们的写数据库语句的速度。很强大。
2.2启动SQL*Plus从上面我们知道,我们已经回打开SQL*Plus了,那怎么启动它呢?有2种方法可以启动。
方法一:就是上面看到的输入用户名,比如
需要注意的是,在Enter password这里,我们是看不见密码的。(不然的话,要是你后面站了一个偷窥狂,那肿么办呢?对吧!)如果出现了SQL>这个表示,那么恭喜你,你已经成功登陆了
方法二:很简单,就在普通打开“开始”→“运行”,输入cmd,然后打开黑屏窗口!~~~
有童鞋可能会说,这样输入太不安全了呀了,连密码都能被看到,对那有没有好的方法呢?有。那就是在sqlplus +用户名 然后敲回车,接着会提醒你输入密码,这个时候的密码是隐藏的哦!。
酱紫就安全了!。
三。用户操作3.1默认用户在你刚创建好Oracle的时候,Oracle会默认的给你打开5个用户,你成功登陆Oracle之后,然后输入以下命令:
select username,account_status from dba_users;
然后,可以得到如下结果,用红色框框起来的就是默认打开的用户~~
好吧,刚刚在网上看到这么一个表,说的很是详细,可以参考参考!~以下是Oracle中的所有用户!~。
用户名密码描述ANONYMOUSANONYMOUS访问http的匿名用户帐户CTXSYSCTXSYS interMedia Text用户DBSNMPDBSNMP 目录集成平台用户EXFSYSEXFSYS表达式过滤器用户MDDATAMDDATA oracle空间数据帐户MDSYSMDSYS oracle空间数据媒体管理员MGMT_VIEWMGMT_VIEW OLAPSYSMANGER用于创建olap元数据 ORDPLUGINSORDPLUGINS oracle ineterMedia,video用户ORDSYSORDSYS image管理员OUTLNOUTLN 拥有connect和resource角色SCOTTTiger 样例帐户SI_INFORMATN_SCHEMA 静止图像浏览帐户SYS用户指定 数据库管理帐户SYSMANOEM_TEMP企业管理器帐户SYSTEM用户指定 数据库管理帐户WK_TESTWK_TEST 同wksysWKPROXY 代理帐户WKSYSWKSYS 同wk_testWMSYSWMSYS 工作空间管理帐户XDBCHANGE_ON_INSTALL xml db帐户
好的,那如果要打开或关闭一个用户怎么着呢?比如说,上面表中的scott用户,现在是unlock状态,也就是你不可以用它登陆。那现在,我们把它打开:
alter user scott account unlock;
这样scott就可以用了!~
3.2创建用户语法如下:
create user 用户名 identified by 密码;
比如create user Lanny identified by a123456;这样就创建了用户Lanny 密码是 a123456。
好了,现在我们创建了用户Lanny,那我现在登入Lanny 用户。记得,在登入这个用户之前,需要解锁。
如:
alter user Lanny account unlock; ----把Lanny这个用户解锁
好了,现在用户也创建了,也解锁了,那是不是就是可以登录了呢?我们在3.3接着聊!!!!
3.3授权(grant)本来这小节是放在最后面的,可是后来想想因为3.2小节讲了一点grant,那就接着讲。在oracle中,权限分为:
系统权限
超过一百多种有效的权限(SELECT * FROM SYSTEM_PRIVILEGE_MAP查)。数据库管理员具有高级权限以完成管理任务,例如:
–创建新用户
–删除用户
–删除表
–备份表
对象权限
不同的对象具有不同的对象权限;对象的拥有者拥有所有权限;对象的拥有者可以向外分配权限
ORACLE对象权限:修改(alter) 删除(delete) 执行(execute) 索引(index) 插入(insert) 关联(references) 选择(select) 更新(update) 。
权限先简单说到这里,需要进一步了解的,可以查看文章下面的参考文献:Oracl的权限。
在上一小节创建了用户Lanny,那现在重新登录SQL*Plus,看看情况。
如图:
提示说缺乏CREATE SESSION的权限?怎么回事呢?原来Oracle里面,你新创建一个用户之后,它是没有任何权限的,比如登录、创建表、查询等等。那没有权限登入,我们就需要给他们授权登入权限(授权也是一个比较复杂的东西,具体的文章后续会提到!)。
授权命令:
grant 参数 to 用户名----参数指的 connect、resource等等
OK,我们现在给Lanny授权connect,grant connect to Lanny。注意,授权命令需要sys或system。当然,它不能自己我授权自己哦,要是这样可以的话 那就乱套了,你进一个商店,自己授权自己是这个店的老板,那还得了。现在,我们看一下能不能创建表,如下图:
不好意思。聪明的童鞋可能现在知道了,因为它没有创建表的权限。对,所以我们需要把resource权限给Lanny,这因为这个权限能让用户创建表权限。
现在学一个切换用户的命令,比如上面conn system/abcABC123456;
conn 用户名/密码; ----从当前用户切换到指定的用户
OK ,其实这里面还有很多的知识,比如说权限和角色,我会在后面专门一章去讲。
在上面我们已经创建了一个表,毫无疑问,我们可以在当前用户下对表进行insert、delete、updage、select操作。那能不能Lanny用户下面查看其它用户下面的数据。比如,系统默认用户scott下面有一个emp表。那我现在能不能在Lanny用户下去查找scott下面的emp表呢?答案是可以,这里也就显示了Oracle的强大之处。
我们怎么做呢?我们需要做的把在scott下的select的权限授权给Lanny。同样需要注意,我们只能试sys、system或者是scott本身才有这个权限。
同理,如果你需要Lanny对Scott用户下的表进行update、delete,照此就OK了。
update:grant update on sott.emp to Lanny。
那如果现在希望Scott用户(或者sys以及system)希望Lanny 继续把这个权限往下传?咋办呢~~很简单,只需要对Lanny进行授权的时候加上:
with grant option 就可以。注意这个是对对象权限而言的。
如果是对系统权限,那么加with admin option。
3.4收回权限既然有授权,那相应的肯定就有授权咯!!
语法:
revoke 权限 from用户;----把用户的权限给撤销
比如如下:
3.5修改用户密码这个很简单。
如果是当前用户给自己修改密码 只需要如下:
password; ---修改当前用户密码
如下:
当然,自己给自己修改密码也很正常的事情。那出了这样,具有最高权限的sys和system也具有修改其他用户密码的权限。
3.6 删除用户password 用户名; ---注意和上面的不同,这里需要加一个用户名,不然它怎能能找到给谁修改密码呀!!~
删除用户需要具有dba的权限,比如sys或system。命令如下:
drop user 用户名 [CASCADE];-----删除用户,我们知道在开发文档命令中,都有[]这种形式,这个形式说明这个命令式可选的!
首先需要明白的是,我们不能自己删除自己。也就是说如果你自己杀自己就像自杀一样,在Oracle是不允许的哦!它会提示“insufficient privileges”。
OK,现在我们知道,用户Lanny是空的,就是说里面什么数据都没有。所以,可以这样操作,但是如果用户Lanny有表、视图或其他数据呢?ok,我们现在创建一个dong用户,然后往这个dong这个用户创建表,然后再进行删除。
啥意思呢?上面的error指的是 如果你需要删除带有数据的用户,你一定要在结尾带上 CASCADE 这个关键 才OK。cascade 表示级联的意思,就是它不管你用户下面有什么数据,格杀勿论,杀伤力很强哦。在用的时候需要格外的注意!。
四。Profile管理用户口令profile 是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名为default的profile。当建立用户没有指定profile选项,那么oracle就会将default分配给用户。
啥意思呢?其实,很好理解。我们平常去网银的时候,如果我们在网银里的密码输入3次,那么不好意思,银行会把你的密码给锁定了,在24个小时之内你就不能在用了。profile就是用来做类似的工作了。这也就大大的加强了,口令的安全性了。比如一个黑客用暴力攻击手段,那么他测三个密码就得等几天。。。
4.1账户的锁定指定该账户登录最多可以输入的密码的次数以及可以指定用户锁定的时间(天数),一般用dba身份去执行该命令。
比如,我现在指定如果Lanny这个用户如果登录了4次还没登录成功,那么我就限制它登入,3天后才可以重新登入。语法如下:
create profile 自定义名字 limit failed_login_attempts 次数 password_lock_time 天数;----次数和天数只能是整数。
那现在来测试下!
4.2给账号解锁那难道Lanny账号真的等到3天之后才能进行登入?当然不是!~当然,前提是dba权限可以进行提前解锁!!~
解锁命令:
4.3终止口令alter user 账号 account unlock;
对数据库用户来说,如果一个账号超多一定的时间,那么我们要求此账号必须进行密码的修改。而且我们可以给一定的宽限期,如果这个宽限期到了,那么此账号就不能在登入,除非你修改密码。同样这个命令也需要dba的身份来操作!
终止口令命令:
create profile 自定义名 limit password_life_time 天数 password_grace_time 宽限天数;
比如:为了让用户定期修改密码可以使用终止口令的命令来完成,给创建的用户Lanny创建一个profile文件,要求改用户每隔10天修改登录密码,宽限位2天。
如图:
4.4口令历史如果希望用户在修改密码的时候不能使用以前使用过的密码.这样Oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,Oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。
语法基本和上面的一样:
create profile 自定义名字 limit password_life_time 天数 password_grace_time 宽限天数 password_reuser_time 几天后开始重用;
比如:
create profile myHistory limit password_life_time 10 password_grace_time 2 password_reuser_time 10;指定口令可重用时间即10天后就可以重用了。
4.5 删除Profile如果删除了profile文件之后,那么相应的规则就没有了效果了!!~
帮助文档
http://blog.csdn.net/lhfeng/article/details/2044717 所有的用户
http://blog.csdn.net/robinson_0612/article/details/5688875 权限详细解释