Oracle笔记18——Oracle用户、权限与角色
用户
创建用户语法:
CREATE USER 用户名 IDENTIFIED BY 密码 [default tablespace 默认表空间名 temp tablespace 临时表空间名 quota 配额大小 on 表空间名];
1.以管理员身份登录,创建用户 CREATE USER user1 IDENTIFIED BY 123456;--此时的user1没有登录权限,所以登录user1不会成功 2.管理员授权用户:访问数据库的权限create session GRANT CREATE SESSION TO user1;--此时,user1可以正常登录了 --测试 1.在user1用户下,创建表tab_test CREATE TABLE tab_test( tid NUMBER(4) ); ①管理员先给user1授权创建表格的权限 GRANT CREATE TABLE TO user1; ②再在user1中创建表 3.以管理员身份执行,给user1分配USERS表空间的10M配额 ALTER USER user1 QUOTA 10m ON USERS; 4.以管理员身份执行,创建表空间 CREATE TABLESPACE TestData LOGGING DATAFILE 'D:\Oracle\TestData.dbf' SIZE 32m AUTOEXTEND ON--自动扩容 NEXT 32m EXTENT MANAGEMENT LOCAL; --测试 1.创建用户user2,默认表空间为TestData CREATE USER user2 IDENTIFIED BY 123456 DEFAULT TABLESPACE TestData; 5.修改密码 ①用户已登录,修改密码 ②用户忘记密码,管理员修改密码 1)以管理员身份执行 ALTER USER user1 IDENTIFIED BY 123; 2)以user1身份执行 ALTER USER user1 IDENTIFIED BY 123; 6.用户状态:正常(为锁定)、锁定、密码过期 1)管理员锁定用户user1 ALTER USER user1 ACCOUNT LOCK;--此时登录user1会提示"the account is locked" 2)管理员解锁用户user1 ALTER USER user1 ACCOUNT UNLOCK;--此时user1可以正常登录 3)管理员设置用户user1密码过期 ALTER USER user1 PASSWORD EXPIRE;--此时登录user1,需要重新设置密码 7.删除用户: 1.以管理员身份执行,删除用户user1 DROP USER user1 CASCADE;--当用户正在被连接的过程中,不能删除该用户
权限
授权:GRANT ... TO ...
撤回:REVOKE ... FROM ...
权限概述:数据库用户想要在数据库上执行任何操作,必须首先要拥有权限,包括建立会话
权限分类:系统权限和对象权限
(1)系统权限:允许用户在数据库中执行指定的行为,一般可以理解成比较通用的一类权限
(2)对象权限:允许用户访问和操作一个指定的对象,该对象是一个确切存储在数据库中的命名对象
注意:
系统权限:当用户A撤回用户B的权限时,之前用户B授予用户C的所有权限,仍然存在;即用户A撤回用户B的权限的过程,不会级联撤回
对象权限:当用户A撤回用户B的权限时,之前用户B授予用户C的所有权限,不再存在;即用户A撤回用户B的权限的过程,会级联撤回
--系统权限 1.先以管理员身份执行,创建user2和user3两个用户, 然后分别授权给用户user2可创建会话的权限,并允许user2将该权限授权给其它用户; 最后用user2将创建会话的权限授予user3 (1)管理员创建用户user2和user3 CREATE USER user2 IDENTIFIED BY 123456; CREATE USER user3 IDENTIFIED BY 123456; (1)管理员授权给user2 GRANT CREATE SESSION TO user2 WITH ADMIN OPTION;--允许user2继续将该权限授予其它用户 (2)user2授权给user3 GRANT CREATE SESSION TO user3; 2.从用户撤回系统权限 revoke...from REVOKE CREATE SESSION FROM user2; REVOKE CREATE SESSION FROM user3; --对象权限 1.授对象权限给用户 GRANT ... ON ... TO (1)scott授与user2可以查看scott用户表emp的权限,并允许user2继续将该权限授予其它用户 GRANT SELECT ON emp TO user2 WITH GRANT OPTION;--以scott用户身份授予权限 --也可以以管理员身份授权 GRANT SELECT ON scott.emp TO user2 WITH GRANT OPTION; --此时,用户user2可以访问到scott用户下的emp表了 SELECT * FROM scott.emp;--以user2的身份查询数据 (2)user2授与user3可以查看scott用户表emp的权限 GRANT SELECT ON emp TO user2 WITH GRANT OPTION;--以user2用户身份授予权限 (3)scott批量授与user2增删改查emp表的权限 GRANT INSERT, DELETE, UPDATE, SELECT ON emp TO user2;--以scott用户身份授予权限 (4)scott全量授权给user2 GRANT ALL PRIVILEGES ON emp TO user2;--以scott用户身份授予权限 (5)管理员授予user2修改用户scott的emp表的权限,但仅限于修改job.empno和ename三列 GRANT UPDATE(job, empno, ename) ON scott.emp TO user2; 2.从用户撤回权限 REVOKE ... ON ... FROM (1)撤回用户user2可以查看scott用户emp表的权限 REVOKE SELECT ON scott.emp FROM user2;--此时,之前user2赋予查看scott用户emp表的权限也一同撤回了
角色
角色定义:权限的集合
角色作用:简化权限管理
1.以管理员身份,创建角色student CREATE ROLE student; 2.以管理员身份,给角色student授创建会话、创建视图的权限 GRANT CREATE SESSION, CREATE VIEW TO student; 3.以管理员身份,创建用户user4和user5 CREATE USER user4 IDENTIFIED BY 123456; CREATE USER user5 IDENTIFIED BY 123456; 4.以管理员身份,给用户user4和user5授予角色student GRANT student TO user4;--此时,user4可以创建会话和创建视图 GRANT student TO user5;--此时,user5可以创建会话和创建视图 5.以管理员身份,回收角色的创建视图权限 REVOKE CREATE VIEW FROM student;--此时,user4和user5都失去了创建视图的权限 6.以管理员身份,回收用户user5的角色 REVOKE student FROM user5;--此时,user5失去创建会话的权限 7.查看当前用户的所有权限 SELECT * FROM session_privs; 8.以管理员身份,删除角色student DROP ROLE student;
Oracle常用的预定义角色:DBA, CONNECT, RESOURCE
1.以管理员身份,创建用户user6,并授予其角色CONNECT CREATE USER user6 IDENTIFIED BY 123456; GRANT CONNECT TO user6;--此时,user6可以正常登录了 2. SELECT * FROM dba_sys_privs WHERE grantee = 'DBA';--管理员权限 SELECT * FROM dba_sys_privs WHERE grantee = 'CONNECT';--CONNECT权限 SELECT * FROM dba_sys_privs WHERE grantee = 'RESOURCE';--RESOURCE权限
PUBLIC:
(1)PUBLIC对象既不是用户,也不是角色,代表公众,公开;
(2)PUBLIC中拥有的所有权限,所有数据库的用户都会自动拥有;
(3)为安全起见,PUBLIC中不应该拥有任何权限
1.以管理员身份,给PUBLIC授予CREATE SESSION权限 GRANT CREATE SESSION TO PUBLIC; CREATE USER user7 IDENTIFIED BY 123456;--此时创建的user7可以直接登录