一、用户与模式
用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作
SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象
SYSTEM用户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象
模式(schema):是某个用户拥有所有对象的集合。具有创建对象权限并创建了对象的用户称为拥有某个模式
注意:创建数据库对象(视图,表等)的任一用户都拥有一个以该用户名称开头的模式,且被视为模式用户
二、ORACLE权限:
系统权限:允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等
对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等
1.系统权限
超过一百多种有效的权限(SELECT * FROM SYSTEM_PRIVILEGE_MAP查)
授予用户系统权限
GRANT privilege [, privilege...] TO user [, user| role, PUBLIC...]
[WITH ADMIN OPTION];
PUBLIC 所有用户
role 角色:(权限的集合)
WITH ADMIN OPTION 使用户同样具有分配权限的权利,可将此权限授予别人
如:grant create session to xiufeng; 登录窗口
grant create table to xiufeng; 创建表
grant unlimited tablespace to xiufeng; 使用表空间
撤销权限:
revoke create table from xiufeng;
revoke unlimited tablespace from xiufeng;
2.对象权限:
有两个用户:user1和user2,都是在库TEST上,分别有表user1.table1,user2.table2
但是用user1登录的时候,user2上表就不能用,此时就可以使用grant命令了:
GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
ALL:所有对象权限
PUBLIC:授给所有的用户
WITH GRANT OPTION:允许用户再次给其它用户授权
如 grant insert,update,delete on user2.bable2 to user1 此时,user1用户就可以操作user2用户的table2表了,在user1下,select * from user2.table2.
对象权限可以控制到列的权限: grant update(name) on xiufeng to xiufengtest
3.查看用户权限: 提供系统信息的视图Oracle中称数据字典
ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
DBA_*:有关整个数据库中对象的信息
(这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)
1.1查看所有用户
1.select * from dba_user;
2.select * from all_users;
3.select * from user_users;
1.2查看用户系统权限
1.select * from dba_sys_privs;
2.select * from all_sys_privs;
3.select * from user_sys_privs;
1.3查看用户对象权限
1.select * from dba_tab_privs;
2.select * from all_tab_privs;
3.select * from user_tab_privs;
1.4.查看所有角色
1.select * from dba_roles;
1.5.查看用户所拥有的角色
1.select * from dba_role_privs;
2.select * from user_role_privs;
三.进阶:
1.不同库下授权:
命令格式 grant 权限 on 数据库名.表名 to 用户名@登陆方式 identified by 'password1';
回收授于用户的权限 命令格式为: revoke 权限 on 数据库名.表名 from 用户名@登陆方式;
2.角色:(权限的集合)
create role myrole;
grant create table to myrole;
grant create session to myrole;
grant drop any table to myrole;
grant myrole to hong12345;
说明:有些系统权限无法赋予角色;
create table(表示可以给自己创建表)
create any table (表示可以给任意用户创建表)
alter table (不存在)
alter any table(表示可以任意修改用户表)
drop table (不存在)
drop any table(表示可以任意删除用户表)