今天看着视频学oracle 发现效果不错。。。
oracle 用户管理:
![](https://img-my.csdn.net/uploads/201210/24/1351073965_9431.jpg)
oracle用户管理是oracle数据库一个重要和核心的内容。
.创建用户
在oracle中要创建一个新的用户可以使用 create user 语句。一般是具有dba(数据管理员)的
权限才能使用,比如是:sys、system用户。一般
用户不可以。创建的新用户是没有任何权限的,甚至是连登录的数据库权限都没有。
sql> create user user_name indentified by password; //(密码得要以字母开头)
.给用户修改密码:
要是给自己修改密码,可以直接使用
SQL> password
如果是给别人修改密码则需要有具有dba的权限,或者是拥有 alter user
的系统权限。
sql> alter user 用户名 identified by 新密码;
.删除用户
删除用户一般也是用dba这个身份去删除,但是不可以删除自己。
在删除用户时,注意如果要删除的用户已经创建了表,那么就需要在删除语句的最后添加上一个
参数 cascade, 那么就可以同时删除那些表了。
sql> drop user 用户名 [ cascade]
.用户管理的综合案例
概述:新创建的用户是没有任何权限的,甚至是连登录数库的权限都没有,需要为其指定相应的权限,
给一个用户赋权限可以用 grant,回收该权
限使用命令 revoke。
新用户连数据库都连接不了,那么就要找人来给它赋权限了。可以是system、sys,但是普通用户是不
可以给他赋权限的。比如scott。
比如 pangzi 是新创建的用户;要赋予它连接数据库的权利,则可以在sys用户下运行语句:sql> grant connect to pangzi;
准确地讲,connect to 不是权限,而是角色。
dba 角色,不要轻易授权,它含有的权利很大,要是把它授权给了一个普通用户,那么该用户就用户就拥有
了dba所有的权限。
resource 角色,可以让pangzi这个用户在任何一个表空间建表。
.scott希望 pangzi可以创建表
.希望 pangzi 可以去查询scott的emp表;
.希望 pangzi 可以修改 scott的emp表;
.希望 pangzi 可以修改、查询、添加、删除scott的emp表。只是这个表。
.scott希望 pangzi可以创建表
.希望 pangzi 可以去查询scott的emp表;
.希望 pangzi 可以修改 scott的emp表;
.希望 pangzi 可以修改、查询、添加、删除scott的emp表。只是这个表。
sql> grant resource on scott.emp to pangzi;
sql> grant select on scott.emp to pangzi;
sql> grant update on scott.emp to pangzi;
sql> grant all on scott.emp to pangzi;
可以授权的用户:自己的东西可以授权给别人,还有sys、system;自己没有的东西不能自己授权给自己。
.权限的收回
要是已经授权了 pangzi 一些权限,而现在想收回这些权限的话,可以用 revoke语句。
要是 a 用户没有授予权限给 b 用户,那么 a 就没有权利收回 b拥有的权限。即使 a 用户是 sys 和 system 用户。
.scott希望收回 pangzi 对emp表的查询权限。
sql> revoke select on emp from pangzi;
//对权限的维护
.希望 pangzi 可以去查询scott的emp表;/还希望 pangzi 可以把这个权限继续传给别人。那么就可以用----如果是对象权限,就加入with grant option------那么这样pangzi就可以继续把权限授予给其他用户了。
sql> grant select on emp to pangzi with grant option
----如果是系统权限。
system 给 pangzi 权限时:
sql> grant connect to pangzi with admin option;
?.那么要是 a 授予了 b 权限,而 b 授予了 c 权限,当 a 要收回 b 权限时...
b 和 c 的权限都会被收回,因为要是 c 的权限还有,那么就可以再把权限授予 b ,那就没有了意义了,安全性也
会变差了( a 可能就是不信任 b 才把权限收回的。)