oracle学习笔记一:用户管理(2)创建删除用户
本文主要介绍如何创建和删除用户,当然里面牵涉很多知识,慢慢道来。
1,创建用户
需求:假设你是oracle管理员,当一个同事入职,你需要分配给一个账号。
创建用户,一般需要有相应权限的用户才可以创建用户.
create user 用户 identified by 密码
举例,创建一个普通用户yfy,这里我们用管理员来创建。
create user yfy identified by m123
[oracle 要求用户密码不能以数字开头],但是我试了没有问题。
此时用小明登录是不可以的。conn yfy/m123;登录之后会退出数据库连接。
Oracle刚刚创建的用户是没有任何权限的,需要管理员分配相应的权限才能够登录。
如何给用户分配相应的权限?
grant create [resource] to yfy;
如果需要登录resource改为session;其他权限以后再讲;
当然授权给某个用户一些权限,也可以回收权限。
revoke create [resource] from yfy
创建用户细节:
aql->create user 用户名 identified by 密码 --------------------------这一行和上面的一样
default tablespace users 默认表空间 ---------------------------用户的表空间在users上
temporary tablespace temp 临时表空间 ---------------------------用户的临时表空间在temp上
quota 3m on users ------------------3m表示建立的数据的对象(表,索引等)最大只能是3m(兆)。
表空间: 表存在的空间,一个逻辑概念。一个表空间指向一个文件。Oracle事先提供默认的表空间,创建用户的时候就会在默认的表空间。
2,角色
预定义角色: dba,connect,resource 见下图。
把常用的权限集中起来,形成一个角色,根据需求有几种,因此有时候管理员不是分配给某个用户某个权限,而是把一个角色分配给用户,那么这个用户将拥有一系列权限。
自定义角色:管理员觉得现在这些角色不满足当前用户的权限要求,可能把某一系列的权限定义为一个角色。
由此可知,上面的grant create session to yfy; 是分配给用户yfy一个系统权限。如果我们嫌给一个用户一个个的分配权限很麻烦就分配给他一个角色,这个角色包含的权限就比较多。那么如何分配角色呢?
grant 角色 to 用户
例如分配给yfy一个resource角色:grant resource to yfy;
当然分配了角色就要回收角色,命令如下:
revoke 角色 from用户
例如回收yfy的resource角色:revoke resource from yfy;
3,删除用户
删除这个用户
drop user 用户 [cascade];
cascade:当删除一个用户的时候,如果这个用户已经创建过数据对象,那么删除这个用户的时候,必须用cascade,表示把这个用户的同时,把该用户创建的对象一同删除。
4,综合案例
创建一个用户xiaohong,然后给他分配两个角色,可以登录,修改密码,然后回收角色,最后删除用户。
(1) 使用system创建xiaohong
create user xiaohong identifid by m123
(2) 给xiaohong分配两个常用的角色
grant connect to xiaohong;
grant resource to xiaohong;
(3) 让xiaohong登录
conn xiaohong/m123;
(4) 让xiaohong修改密码
passw 或者password;回车之后再改。命令之后可以加上用户名,不加就是修改当前用户;
(5) 回收角色
revoke connect from xiaohong;
revoke resource from xiaohong;
(6) 删除这个用户
drop user xiaohong [cascade];
5,方案
方案schema
当一个用户创建好了之后,如果该用户创建了任意一个数据对象,这时我们的dbms就会创建一个对应的一个方案和用户同名。
需求: 让xiaohong用户可以查询scott的enp表;
步骤如下:
(1)先用scott登录 conn scott/scott;
(2)赋权限 grant select [update|delete|insert|all] on emp to xiaohong;
(3)然后xiaohong登录后查询 select * from scott.emp;
方案其实就是说对于每创建一个用户,该用户的数据都在此方案中,别人是看不到的,如果想让别人对你的某些数据有某些权限,则可以赋予,然后对方可以在操作时加上方案名即可操作。