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 ... TO1)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 ... FROM1)撤回用户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可以直接登录

 

posted @ 2021-11-11 19:57  `青红造了个白`  阅读(125)  评论(0编辑  收藏  举报