OCP学习之用户与权限管理
1、系统权限与对象权限
系统权限:获得访问数据库的权限,并且执行特定DDL操作
对象权限:处理数据库对象的权限,SELECT 、INSERT 、UPDATE
2、系统权限 (SYS用户不需要授权就具有以下权限)
CREATE USER :
DROP USER:
DROP ANY TABLE:
BACKUP ANY TABLE
SELECT ANY TABLE
CREATE ANY TABLE
3、用户系统权限管理
创建用户sim之后,是不能直接登录的,因为连登录的权限都没有
SQL> grant create session to sim;
同理还有创建其他的权限
grant create table/view/sequence/procedure
不需要一个一个地授权,可以写在一行上
SQL> grant create table,create view,create sequence,create procedure to sim;
4、对象权限
对象权限是能对特定的表,视图、序列等对象执行操作的权限和能力,每个对象都有一组可以授权的权限。
对象权限特点:
1)对象权限根据对象的不同而变化(不经授权sim用户不能访问hr用户的表)
2)对象的所有者对其具有所有的权限(hr用户不用授权就可以管理 hr. 下面的所有对象)
3)所有者可以将属于他的对象授予其他用户
5、授权对象权限
1)授予sim用户对employees表的查询权限(否则会报 [表或视图不存在] 的错误)
SQL> conn hr/hr
Connected.
SQL> grant select on hr.employees to sim;
Grant succeeded.
2)授权DML权限,并且指定具体列名(若使用hr用户登录可以不加hr. 的前缀 ,sys用户需要加)
SQL> grant update(email,phone_number) on employees to sim;
Grant succeeded.
6、撤销系统权限与对象权限
1)收回sim用户的创建表的系统权限(使用sys用户登录)
SQL> revoke create table from sim;
Revoke succeeded.
注意:是REVOKE ... FROM ,不是 TO
2)收回sim用户对 employees表的查询权限
SQL> revoke select on employees from sim;
Revoke succeeded.
这时候sim用户再查询 employees表就会报【权限不足】的报错,之前是【表或视图不存在】
3)前面不是授权了update的权限吗?收回select后还可以update吗?
不能,报【权限不足】,可以推测出select是最基础的权限
7、WITH GRANT OPTION 与 WITH ADMIN OPTION
WITH GRANT OPTION : 使用revoke收回权限后,其他用户被授权的会被级联收回
WITH ADMIN OPTION : 不会级联收回
8、角色(role) 管理
直接授权不同的权限方法很安全,但是有两个问题:
1)工作量大:需要很多的授权语句,如果新增了一个用户,岂不是要又要执行很多grant 语句?
2)无法使权限在某些环境中处于活动状态(看不太懂)
9、创建角色
1)创建一个hr_leader角色,作为hr部门的领导,可以访问到所有的表(sys用户登录)
SQL> create role hr_leader;
Role created.
2)授权角色
grant create session to hr_leader; GRANT SELECT ON HR.REGIONS to hr_leader; GRANT SELECT ON HR.COUNTRIES to hr_leader; GRANT SELECT ON HR.LOCATIONS to hr_leader; GRANT SELECT ON HR.DEPARTMENTS to hr_leader; GRANT SELECT ON HR.JOBS to hr_leader; GRANT SELECT ON HR.EMPLOYEES to hr_leader; GRANT SELECT ON HR.JOB_HISTORY to hr_leader;
3)授权给该角色给一个用户
SQL> grant hr_leader to sim;
Grant succeeded.
10、预定义的角色
CONNECT : 12c仅有create session 权限
RESOURCE :此角色可以创建数据库对象和过程对象
DBA : 拥有大多数系统权限,以及多个对象权限和角色,任何被授予DBA角色的用户可以管理数据库的大多数方面(启动和关闭数据库除外)
SELECT_CATALOG_ROLE : 拥有针对数据库字典中大多的对象权限,但是没有系统权限和针对用户数据的权限。针对监视数据库并报告数据库情况,但看不到用户数据
SCHEDUILER_ADMIN : 拥有管理调度作业的系统权限
PUBLIC : 这是一个特殊的角色,每一个用户都具有这个角色
如果将某个权限授予PUBLIC,该权限将作用于所有的数据库用户,如:
grant select on hr.employees to public;
11、表空间授权
1)授权配额
如果没有授权,就会报错:ORA-01950: 对表空间 XXX 无权限
SQL> alter user sim quota unlimited on users; User altered.
99、
1)查看系统权限授权情况(sys用户登录)
SQL> select grantee,privilege from dba_sys_privs where grantee='SIM'; GRA PRIVILEGE --- ---------------------------------------- SIM CREATE TABLE SIM CREATE VIEW SIM CREATE PROCEDURE SIM CREATE SESSION SIM CREATE SEQUENCE
2)查看对象权限授权(普通用户登录)
select GRANTEE,OWNER,TABLE_NAME,PRIVILEGE from user_tab_privs WHERE grantee='SIM';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?