一、目标:
1,掌握建立用户、概要文件的使用
2,掌握系统权限的含义及授予、回收
3,掌握对象权限的含义及授予、回收
4,掌握角色的含义、对角色授予权限、把角色分配给用户
二、默认用户
三、创建新用户及概要文件profile
1、create user 语法:
CREATE USER username IDENTIFIED BY password [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE tablespace];
2、profile:概要文件,可以让用户规范在profile下的规则
(1)用户密码有效期
(2)密码尝试登录次数
(3)用户密码登录失败,锁定后,被锁定天数 等等
例子:
SQL> create user test1 identified by test1; SQL> create profile pro1 limit failed_login_attempts 2 password_lock_time 2; SQL> alter user test1 profile pro1;
3、如果已经存在profile,可以直接在创建用户时,使用自定义profile
SQL> create user test2 identified by test2 profile pro1;
4、解锁test1,test2;
SQL> alter user test1 account unlock;
5、修改profile(修改密码口令,最多10天就需要进行修改) user
SQL> alter profile pro1 limit password_life_time 10 password_grace_time 2;
1、create profile oracle_dblink_profile limit failed_login_attempts 5 password_lock_time 2;"
2、alter profile oracle_dblink_profile limit password_life_time unlimited ;
3、alter user oraerp_dblinkuser profile ORACLE_DBLINK_PROFILE;
四、权限---系统权限
1、权限指的是执行特定命令或访问数据库对象的权利pro
2、权限有两种类型,系统权限和对象权限
(1)系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限
(2)对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作
3、授予用户权限,可以是系统权限或者对象权限;语法:
GRANT privilege [,privilege…] TO user [, user|role, PUBLIC…] [WITH ADMIN OPTION];
4、收回系统权限:
REVOKE create session FROM test1;
5、系统权限的授予
(1)CONNECT:角色允许用户连接至数据库,并创建数据库对象;
GRANT CONNECT TO test;
(2)RESOURCE:角色允许用户使用数据库中的存储空间;
GRANT RESOURCE TO test;
(3)CREATE SESSION: 此系统权限允许用户连接到数据库上;
GRANT CREATE SESSION TO test;
(4)CREATE TABLE:给用户创建表的权限;
GRANT create table to test;
(5)UNLIMITED:允许用户无限制访问表空间的权限;
GRANT UNLIMITED TABLESPACE to test;
(6)create any table :给用户分配权限,可以创建任意表(包括其他用户的表,也可以创建);
grant create any table to test;
注意:如果需要创建表,需要新用户拥有(3),(4)权限,老版本的11g,可能需要(5)权限
6、查看用户拥有的权限
SQL>select * from dba_sys_privs d where d.grantee='TEST1';
7、传递权限(GRANT 最后增加with admin option)
SQL> grant create session to test2 with admin option;
注:继承后,test2分配给下一个用户test3的create session权限,test3也可以生效;同时如果test的create session 被revoke后,test3可以正常登录,依然拥有create session权限。
五、权限——对象权限——访问某个用户的特定对象(如表、视图等)的对象权限(select on scott.student)
1、语法:
GRANT object_privilege [columns…] ON object TO user [, user|role, PUBLIC…] [WITH GRANT OPTION];
2、收回对象权限REVOKE:
REVOKE privilege ON object FROM {user|role|PUBLIC};
例:revoke select on scott.student from test2
3、例如:
(1)允许用户查询 EMP 表的记录
GRANT SELECT ON SCOTT.EMP TO test1;
(2)允许用户更新 EMP 表中的记录
GRANT UPDATE ON SCOTT.EMP TO test1;
(3)允许用户插入、删除、更新和查询EMP 表中的记录
GRANT ALL ON SCOTT.EMP TO test1;
(4)授予精确到列上的权限
允许用户更新 emp 表中的ename、sal列
grant update(ename,sal) on scott.emp to test1;
(5)with grant option 继承grant 对象权限(9i以及之前是无此功能的)
(6)revoke select on scott.emp from test2;
注:继承后,test2可以分配给下一个用户test3的select emp表的权限,test3也可以生效;同时如果test2的create session 被revoke后,test3就无法正常select emp的表了,这是和系统权限with admin option的区别
六、角色管理
1、角色管理:角色是一组相关权限的组合,可以将权限授予角色,再把角色授予用户,以简化权限管理。
(1)创建角色CREATE ROLE,应该具有CREATE ROLE系统权限。
语法:CREATE ROLE role_name;
(2) 授予角色权限,可以是系统权限或者对象权限。
语法:GRANT privilege TO ROLE;
grant create session ,create any table, drop any table to role1;
(3) 将角色授予用户
语法:GRANT role TO user;
grant role1 to test2;
(4) 从用户收回角色
语法:REVOKE role FROM user;
七、常用角色及系统权限、对象权限查看:
(1)connect、resource、dba等
(2)查看用户具有的系统权限:
SQL>select * from dba_sys_privs d where d.grantee='CONNECT';
(3)查看有多少角色
SQL>select * from dba_roles;
(4)查看当前用户的角色具有的系统权限
SQL>select * from role_sys_privs;
(5)查看用户具有的系统权限:(system或sys用户查询)
SQL>select * from dba_sys_privs d where d.grantee='TEST1';
(6)查看角色具有的对象权限;
SQL>select * from dba_tab_privs where rownum<20 and grantee='DBA';
(7)查看用户具有的对象权限;
SQL>select * from dba_tab_privs where rownum<20 and grantee='TEST1';
8、更改用户口令,删除用户
SQL> alter user test1 identified by test1;
SQL> drop user test1 cascade;
User dropped.
零、总结:
1、查看当前用户的所有权限
与权限,角色相关的视图大概有下面这些:
DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限
USER_SYS_PRIVS: 当前用户所拥有的系统权限
SESSION_PRIVS: 当前用户所拥有的全部权限
ROLE_SYS_PRIVS: 某个角色所拥有的系统权
注意: 要以SYS/SYSTEM用户登陆查询这个视图,否则返回空.
ROLE_ROLE_PRIVS: 当前角色被赋予的角色
SESSION_ROLES: 当前用户被激活的角色
USER_ROLE_PRIVS: 当前用户被授予的角色
另外还有针对表的访问权限的视图:
TABLE_PRIVILEGES
ALL_TAB_PRIVS
ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限
2、数据字典
(1)、动态数据字典是以v$xxx开始的数据字典,在数据库中约有150个左右,这些数据字典反映数据库动态运行状况,在不同时间查询会得到不同的结果。
(2)、DBA数据字典是以DBA_xxx表示,该数据字典存储数据库结构,查询DBA数据字典可以反映数据库结构设置,管理磁盘空间和表空间、事务与回退段、用户与表空间等信息。
(3)、用户数据字典是以USER_xxx表示,这些数据字典反应用户所创建的实体信息。如,USER_TABLES、USER_VIEWS,数据库管理员具有操作全体用户所有实体的权限,可以查询这类数据字典,了解用户所创建实体状况,必要时可以将用户创建的不正确的实体删除。
(4)、ALL_xxx类数据字典,表示用户所创建的实体及用户有权可以存取的实体
3、ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA。
(1)USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
(2)ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
(3)DBA_*:有关整个数据库中对象的信息
(这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)
4、举例:
(1)、查看所有用户
select * from dba_user; select * from all_users; select * from user_users;
(2)、查看用户系统权限
select * from dba_sys_privs; select * from all_sys_privs; select * from user_sys_privs;
(3)、查看用户对象权限
select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs;
(4)、查看所有角色
select * from dba_roles;
(5)、查看用户所拥有的角色
select * from dba_role_privs; select * from user_role_privs;
(6)、查看当前用户的缺省表空间
select username,default_tablespace from user_users;
(7)、查看某个角色的具体权限
如grant connect,resource,create session,create view to TEST;
(8)、查看RESOURCE具有那些权限
用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
同步于:https://blog.csdn.net/qq_36249352/article/details/79805314
文章评论