系统权限:
1、使用GRANT语句向用户赋予系统权限:
GRANT system_privilege TO user_name [ WITH ADMIN OPTION ] ;
注:使用WITH ADMIN OPTION语句后,使用户可以将相同权限赋给其他用户。
2、使用REVOKE语句撤销系统权限:
REVOKE system_privilege FROM user_name ;
注:当删除A用户的权限时,通过A赋予B的权限不会消失。
REVOKE system_privilege FROM user_name ;
注:当删除A用户的权限时,通过A赋予B的权限不会消失。
3、任何用户,都必须有CREATE SESSION权限,才可以连接到数据库。
4、可通过 selectdistinctprivilegefrom dba_sys_privs; 来查询所有的系统权限列表
ANALYZE ANY
AUDIT SYSTEM
CREATE TABLE
DROP PROFILE
DROP ANY ROLE
ALTER DATABASE
ANALYZE ANY
AUDIT SYSTEM
CREATE TABLE
DROP PROFILE
DROP ANY ROLE
ALTER DATABASE
DROP ANY INDEX
DROP ANY TABLE
LOCK ANY TABLE
EXECUTE ANY PROCEDURE
……
DROP ANY TABLE
LOCK ANY TABLE
EXECUTE ANY PROCEDURE
……
基本上都是可以顾名思义的,但是权限相对比较多,150项左右。
对象权限:
1、对象权限赋予语法:
GRANT object_privilege ON object_name TO username [ WITH GRANT OPTION ];
注:使用WITH GRANT OPTION语句后,使用户可以将相同权限赋给其他用户,与系统权限相同。
GRANT object_privilege ON object_name TO username [ WITH GRANT OPTION ];
注:使用WITH GRANT OPTION语句后,使用户可以将相同权限赋给其他用户,与系统权限相同。
2、对象权限撤销语法:
REVOKE object_privilege ON object_name FROM username;
注:当删除A用户的权限时,通过A赋予B的权限自动消失,与系统权限相反。
REVOKE object_privilege ON object_name FROM username;
注:当删除A用户的权限时,通过A赋予B的权限自动消失,与系统权限相反。
3、
查看具体的对象权限:
select * from dba_tab_privs where grantee= 'WANGXIAOQI' ;
select * fromTABLE_PRIVILEGESwhere GRANTEE='WANGXIAOQI';
select * fromTABLE_PRIVILEGESwhere GRANTEE='WANGXIAOQI';
注1:两者均可以查看对象权限,只是展现形式不同。
注2:表名为TABLE_PRIV,但
不光只有table,而是所有object的信息,包括function、procedure、package等。
4、object privilege 种类比较少,而且根据对象类型的不同而不同。
在赋值时可以使用
all代替该类型对象的所有权限类型,如:
grant select , update , delete , insert on table_name to user_name;
grant all on table_name to user_name;
注:对于TABLE,all包括:ALTER、DELETE、INDEX、INSERT、SELECT、UPDATE、REFERENCES、ON COMMIT REFRESH、QUERY REWRITE、DEBUG、FLASHBACK
角色管理:
1、通过role来简化赋权操作,每个role含有若干项系统权限。role包括
系统预定义和
自定义两种。
select * from dba_roles; --查询当前所有ROLE列表,包括自定义
select * from dba_role_privs; --查询某用户的ROLE权限
select * from ROLE_SYS_PRIVS; --查询当前用户的ROLE,及其所包含的系统权限
2、系统预定义角色:
CONNECT:
CREATE VIEW
CREATE TABLE
ALTER SESSION
CREATE CLUSTER
CREATE SESSION
CREATE SYNONYM
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE TABLE
ALTER SESSION
CREATE CLUSTER
CREATE SESSION
CREATE SYNONYM
CREATE SEQUENCE
CREATE DATABASE LINK
RESOURCE:
CREATE TYPE
CREATE TABLE
CREATE CLUSTER
CREATE TRIGGER
CREATE OPERATOR
CREATE SEQUENCE
CREATE INDEXTYPE
CREATE PROCEDURE
CREATE TABLE
CREATE CLUSTER
CREATE TRIGGER
CREATE OPERATOR
CREATE SEQUENCE
CREATE INDEXTYPE
CREATE PROCEDURE
另外包括比较重要的ROLE如:DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE等。
3、自定义角色:
创建ROLE:
CREATE ROLE role_name
[ NOT IDENTIFIED | IDENTIFIED BY password]
注:IDENTIFIED 表示在修改该ROLE时是否需要提供密码 <修改,不包括赋权和取消权限>
在创建 role 之后,使用 grant 和 revoke 手动设置 role 对应的权限
再使用 grant 和 revoke 将 role 赋给 user
注:可以将 role 赋给 role
4、启用和禁用ROLE:
SET ROLE [role [identified by password] |,role [identified by password]...]
| ALL [EXCEPT role[,role]...]
| NONE ];
注:ALL 表示启用改用户的所有角色,NONE表示禁用所有角色。
例:
禁用所有角色:setrolenone;
启用所有角色:setroleall; --role不能有密码
启用某个角色:setrole role_test identifiedby test; --有密码的话
禁用某个角色:setroleallexcept role_test;
注:setrole命令是覆盖性质的,即不能先启用一个,再启用另一个,必须一条命令中全部启动;
5、修改用户时设置角色:
ALTER USER username
[default role [role_name[,role_name,...]]
| all [except role_name[,role_name,...]]
| none ];