在之前讲解完成的是DDL定义功能,但是除了DML、DDL之外还有一个DCL(GRANT、REVOKE), 指定是权限的控制,但是此部分的操作一般都有DBA 负责,下面就简单的演示以下关于用户的创建、权限分配功能。
1、如果要想进行用户的维护,那么首先一定是具备管理员权限的用户:sys、system。本次适应sys。
CONN sys/change_on_install AS SYSDBA ; |
2、创建一个新用户,用户名叫dog密码为wangwang
语法: | CREATE USER 用户名 IDENTIFIED BY 密码 ; |
使用: | CREATE USER dog IDENTIFIED BY wangwang ; |
但是这个时候也只是一个普通的用户而已,它连登录都做不了。此时的登录的错误提示信息:“ORA-01045:user DOG lacks CREATE SESSION privilege;logon denied”,缺少创建SESSION的权限(每一个连接到数据库上的用户都被成为一个SESSION,缺少创建SESSION就意味着无法连接数据库)。
3、为dog用户授予连接数据库的权限
GRANT CREATE SESSION TO dog ; |
之后就可以使用dog用户登录了。但是非常遗憾的是,此时dog用户只能够登录,无法进行数据表等对象的创建。
4、授予创建表的权限
GRANT CREATE TABLE TO dog ; |
GRANT CREATE SEQUENCE TO dog ; |
那万一现在还有很对对象要闯进。例如:索引、视图、过程、函数等。这样的授权是非常麻烦的,所以为了方便用户的维护,在Oracle里面提供了两个角色(每个角色包含有多个权限);RESOURCE 、CONNECT,一般只需要将这两个角色授予新用户即可。
5、将RESOURCE和CONNECT角色授予dog用户
GRANT CONNECT,RESOURCE TO dog ; |
6、 用户维护
·修改用户密码;
ALTER USER dog IDENTIFIED BY miaomiao ; |
·让用户的密码在登录一次之后失效,强迫用户去修改密码;
ALTER USER dog PASSWORD EXPIRE ; |
·锁定一个用户,让用户无法使用;
ALTER USER dog ACCOUNT LOCK ; |
·用户解锁
ALTER USER dog ACCOUNT UNLOCK ; |
7、那么以上都是为用户授予的系统权限,可是除了系统权限之外,还存在有对象权限。所谓的对象权限指的是一个用户的操作权限,主要有四个权限:INSERT、UPDATE、DELETE、SELECT。
范例:将scott.emp的INSERT、SELECT权限授予dog
GRANT SELECT,INSERT ON scott.emp TO dog ; |
8、权限回收,权限回收操作主要使用REVOKE指令完成;
范例:收回对象权限
REVOKE SELECT,INSERT ON scott.emp from dog ; |
范例:回收角色
REVOKE CONNECT,RESOURCE FROM dog ; |
范例:回收系统权限
REVOKE CREATE SESSION,CREATE TABLE,CREATE SEQUENCE FROM dog ; |
删除用户
DROP USER dog CASCADE; |
以上的这几步操作也只是一个基本参考而已。