ORACLE —DCL,TCL
DCL
1.用户维护
2.角色维护
3.用户、角色、权限的关系
DCL -用户维护
创建用户同时设置密码:
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
tips:
在进行创建用户时,使用sys
或其他管理员用户登录
1.用户名不区分大小写,在创建、删除、登录用户时可以任意使用大小写;
密码严格区分大小写
,无论在创建用户、修改密码还是登录时都要注意
2.此时仅仅是在数据库中注册了用户
,但没有任何权限
,甚至登录数据库的权限都没有
3.每个用户下有自己各自的内容,互相之间不能直接访问,管理员用户可以直接访问其他用户的内容
4.普通用户间可以通过赋予权限实现互相访问
为用户添加权限:
GRANT PRIVILEGE TO USER_NAME;
为用户添加创建会话(连接数据库)的权限
GRANT CREATE SESSION TO USER_NAME; --仅能连接数据库
为用户添加查询某表的权限(所有者用户执行)
GRANT SELECT ON USER1.TB_NAME TO USER2;
为用户添加基础连接角色CONNECT和基础资源角色RESOURCE
GRANT CONNECT,RESOURCE TO USER_NAME;
为用户添加管理员角色DBA
GRANT DBA TO USER_NAME;
CONNECT:该角色具有连接数据库的权限
RESOURCE:该角色具有数据库的基本角色,包括查询对象、部分对象的创建修改删除
DBA:数据库管理员,拥有数据库的最高权限
收回用户权限:
REVOKE PRIVILEGE FROM USER_NAME;
修改用户密码:
ALTER USER USER_NAME IDENTIFIED BY NEW_PASSWORD; --自己改自己或管理员改其他用户
锁定/解锁用户:
ALTER USER USER_NAME ACCOUNT LOCK;
ALTER USER USER_NAME ACCOUNT UNLOCK;
删除用户:
DROP USER USER_NAME;--用户下无任何对象
DROP USER USER_NAME CASCADE; --连同用户下的对象一并删除
数据字典
SELECT * FROM DBA_USERS; --查询所有用户
注意:
在数据字典中,所有用户的用户名都是以
大写格式存储
的,查询时要注意
DCL -角色
带有一系列权限的集合。
作用:
用户被赋予某角色,相当于同时被赋予了该角色下的所有权限
分类:
系统角色:数据库自带角色
自定义角色:用户根据自身实际需求,自行创建的角色
创建角色:
CREATE ROLE ROLE_NAME;
删除角色:
DROP ROLE ROLE_NAME;
给用户赋予角色或从用户收回角色:与赋予权限或收回权限的语法一致
eg:
GRANT SELECT ON SCOTT.EMP TO ROLE74;
GRANT CREATE TABLE TO ROLE74;
GRANT CREATE SESSION TO ROLE74;
CREATE USER LISI IDENTIFIED BY LISI;
查询角色拥有的权限:
对象权限:如查询数据、增加数据、删除数据等
SELECT * FROM DBA_TAB_PRIVS;
系统权限:如创建表、删除索引、连接数据库等
SELECT * FROM DBA_SYS_PRIVS;
TIPS:
1.通过角色赋予给用户的权限,不能通过【查询某用户具有的权限】查到;只有
直接赋予
给用户的权限,才能通过【查询某用户具有的权限】查到
2.想要确定某个用户到底有什么权限,一方面需要直接查询该用户下有哪些权限,另一方面需要查询该用户下所拥有的的角色具有什么权限
3.想要赋予权限给用户,可以直接将该权限赋予给用户,或将具有该权限的角色赋予给用户
查询某用户下具有的所有对象权限:
SELECT T.PRIVILEGE,T.OWNER,T.TABLE_NAME FROM DBA_TAB_PRIVS T WHERE T.GRANTEE = 'USER_NAME'
UNION
SELECT T.PRIVILEGE,T.OWNER,T.TABLE_NAME FROM DBA_TAB_PRIVS T WHERE T.GRANTEE IN (SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS T WHERE T.GRANTEE = ' USER_NAME ');
查询某用户下具有的所有系统权限:
SELECT T.PRIVILEGE FROM DBA_SYS_PRIVS T WHERE T.GRANTEE = ' USER_NAME '
UNION
SELECT T.PRIVILEGE FROM DBA_SYS_PRIVS T WHERE T.GRANTEE IN (SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS T WHERE T.GRANTEE = ' USER_NAME ');
DCL -用户、角色与权限的关系
用户:数据库的使用者,比如SYS、SCOTT
权限:指能否在数据库中做某种操作,比如创建表、查询数据
角色:带有一系列权限的集合,拥有角色,即拥有该角色下所有的权限,比如CONNECT,RESOURCE,DBA
在做权限管理时,可直接将某权限赋予给某个用户,若某些权限需要经常赋予给用户,可直接建立一个包含这些权限的角色,直接赋予角色即可达到赋予众多权限的目的。
TCL
事务: 为了完成某项业务(任务、操作),由一系列看得见的SQL或看不见的后台进程组成的一系列逻辑工作单元。
整个事务在处理过程中一直处于未提交状态,直到全部过程执行成功才可以被提交,若中间某步出现错误,则整个事务会全部回滚到事务执行之前的状态并报错。
事务的四个属性(统称ACID)
1.原子性:事务是一个整体的工作单元,要么全部执行,要么全部取消。某一步执行失败,则全部回滚。
2.一致性:所有相关数据必须保持状态一致,以保持数据的完整性,若事务执行成功,所有相关数据全部变为新状态,若失败,所有相关数据处于原始状态。
3.隔离性:当前事务在进行数据修改时,其他事务只能查看修改之前的状态,等到当前事务执行结束(提交后),数据的修改才能被看到。
4.持久性:事务提交后,所做的修改就会永久保存,直到下一次事务来改变它。
TCL关键词:
COMMIT; --事务提交
ROLLBACK; --事务回滚
SAVEPOINT; --保存点
–在接下来的DML操作可能有风险的情况下在DML过程中使用
保存点语法:
设立保存点:
SAVEPOINT SP_NAME;
回滚到某保存点:
ROLLBACK TO SAVEPOINT SP_NAME;
事务的提交和回滚:
显式提交:由COMMIT决定是否提交当前事务,例如DML语句中的 INSERT UPDATE DELETE ;
隐式提交:一旦整个事务执行成功,ORACLE会自动提交该事务,例如:CREATE ALTER DROP GRANT REVOKE ;
自动回滚:一旦事务进行过程中出现任何错误,ORACLE会自动回滚当前事务。
其他的
数据库关闭
命令
SHUTDOWN [NORMAL|TRANSACTION|IMMEDIATE|ABORT]
NORMAL: 正常关闭方式(默认)
阻止新用户连接并等待已连接用户主动断开连接后关闭
TRANSACTION: 事务关闭
阻止新用户连接和新事务,等待所有事务提交完,用户断开连接后关闭
IMMEDIATE: 立即关闭方式(常用)
立即终止当前用户连接,强行停止并回退事务,关闭数据库
ABORT: 终止关闭方式(慎用
)
具有强制性和一定的破坏性
数据库启动
命令
STARTUP