Oracle系统权限与对象权限

oracle权限分为:

系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等。

对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等。

系统权限

超过一百多种有效的权限(查询约209种)

SQL> select count(*) from system_privilege_map;

  COUNT(*)
----------
       209

  

数据库管理员具有高级权限以完成管理任务,例如:

– 创建新用户

– 删除用户

– 删除表

– 备份表

常用的系统权限:

create session 创建会话

create sequence 创建序列

create synonym 创建同名对象

create table 在用户模式中创建表

create any table 在任何模式中创建表

drop table 在用户模式中删除表

drop any table 在任何模式中删除表

create procedure 创建存储过程

execute any procedure 执行任何模式的存储过程

create user 创建用户

drop user 删除用户

create view 创建视图

授予系统权限

grant privilege [, privilege...] to user [, user| role, public...] [with admin option];

  

选项:

public 所有用户都有的角色

with admin option 使用户同样具有分配权限的权利,可将此权限授予别人

授予系统权限

1、创建用户...

2、授权

例:

链接到会话,创建表

grant create session,create table to test01;

  

创建表并且可以授权其他用户

grant create session to test01 with admin option;

  

注:

1)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。

2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

执行任意存储过程权限

grant execute any procedure to test01;

  

注: execute any procedure 不能和 create any procedure 授权统一普通用户

授权所有用户dba

grant dba to public --不能做的哈。。

移除所有用户的dba权限

revoke dba from public --不能做的哈。

使用系统权限

创建test用户,默认表空间test,授权创建会话、链接数据库权限

create user test identified by test default tablespace test;

grant create session,connect to test;

  

使用表空间权限

grant unlimited tablespace to test; --授权可以使用默认表空间的权限

conn itpux/itpux --链接会话

create table itpuxt1 as select * from user_tables; --在默认表空间创建表

 

显示系统权限

dba_sys_privs --针对所有用户被授予的系统权限

user_sys_privs --针对当前登陆用户被授予的系统权限

查看所有系统权限:

select * from system_privilege_map;

  

显示用户所具有的系统权限:

select * from dba_sys_privs;

  

显示当前用户所具有的系统权限:

select * from user_sys_privs;

  

显示当前会话所具有的系统权限:

select * from session_privs;

  

在sys用户下查TEST用户的权限

select * from dba_sys_privs where grantee=‘TEST‘;

select * from dba_sys_privs where grantee in (‘TEST‘,‘SYSTEM‘) ;

select * from dba_sys_privs where grantee in (‘TEST‘,‘SYSTEM‘) order by grantee ;

  

收回系统权限

赋予系统权限

grant create table to test;

  

收回赋予的系统权限

revoke create table from test;

  

注意:对于使用with admin option 为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限

对象权限

不同的对象具有不同的对象权限

对象的拥有者拥有所有权限

对象的拥有者可以向外分配权限

oracle一共有8种对象权限

对象授权

grant object_priv|all [(columns)] on object to {user|role|public} [with grant option];

all:所有对象权限

public:授给所有的用户

with grant option:允许用户再次给其它用户授权

conn /as sysdba;

grant select on scott.emp to test; --授权test查找scott.emp表的权限

grant select on scott.emp to public; --授权所有用户查找scott.emp表的权限

grant update(sal,mgr) on scott.emp to test with grant option;

conn itpux/itpux

select * from scott.emp;

update scott.emp set sal=sal+100;

  

授予系统权限与授予对象权限的语法差异:

授予对象权限时需要指定关键字on,从而能够确定权限所应用的对象, 对于表和视图可以指定特定的列来授权。

查询权限分配情况

-- 数据字典视图

role_sys_privs role_tab_privs

user_tab_privs_made

user_tab_privs_recd

user_col_privs_made

user_col_privs_recd

user_sys_privs

user_tab_privs

user_role_privs

查询已授予的对象权限(即某个用户对哪些表对哪些用户开放了对象权限)

sql> conn scott/scott

sql> select * from user_tab_privs_made; --下面是scott用户开放的对象权限

  

查询列上开放的对象权限

sql> select * from user_col_privs_made;

  

查询已接受的对象特权(即某个用户被授予了哪些表上的哪些对象特权)

sql> select * from user_tab_privs_recd;

  

查询用户已接受列的对象权限

sql> select * from user_col_privs_recd;

  

收回对象权限

使用revoke 语句收回权限

使用with grant option 子句所分配的权限同样被收回

revoke {privilege [, privilege...]|all} --on object --from {user[, user...]|role|public} -- [cascade constraints];--收回权限

cascade constraints

为处理引用完整性时需要

对于要回收查询/修改列的权限,可以直接怼表级进行回收,不需要到具体列。

SQL> conn /as sysdba;

Connected.

SQL> revoke select on scott.emp from test;

Revoke succeeded.

SQL> revoke update(sal,mgr) on scott.emp from test;

revoke update(sal,mgr) on scott.emp from test

* ERROR at line 1:

ORA-01750: UPDATE/REFERENCES may only be REVOKEd from the whole table, not by column

SQL> revoke update on scott.emp from test;

Revoke succeeded.

  

其它

检查dba权限的用户

select * from dba_role_privs where granted_role=‘dba‘;

  

查看用户具有的系统权限:

select * from session_privs;

  

总结

使用create user语句创建用户,alter user语句修改用户,其语法大致相同 drop user username [cascade] 会删除用户所拥有的所有对象及数据。

系统权限允许用户在数据库中执行特定的操作,如执行ddl语句。

with admin option 使得该用户具有将自身获得的权限授予其它用户的功能。 但收回系统权限时,不会从其它帐户级联取消曾被授予的相同权限。

对象权限允许用户对数据库对象执行特定的操作,如执行dml语句。

with grant option 使得该用户具有将自身获得的对象权限授予其它用户的功能 但收回对象权限时,会从其它帐户级联取消曾被授予的相同权限。

系统权限与对象权限授予时的语法差异为对象权限使用了on object_name 子句。

public 为所有的用户

all:对象权限中的所有对象权限

原文地址:https://www.cnblogs.com/black-start/p/11044695.html

时间: 2024-12-15 11:26:53

Oracle系统权限与对象权限的相关文章

如何Oracle查出一个用户具有的所有系统权限和对象权限

1. 系统权限 1 SELECT * 2 FROM DBA_SYS_PRIVS 3 WHERE GRANTEE = 'LCAM_SYS_1216' 4 UNION ALL 5 SELECT * 6 FROM DBA_SYS_PRIVS 7 WHERE GRANTEE IN 8 (SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'LCAM_SYS_1216'); 系统权限 2.对象权限 1 SELECT * 2 FROM DBA_TA

Oracle 用户、角色、权限(系统权限、对象权限)的数据字典表

1?三者的字典表 1.1?用户 select?*?from?dba_users; select?*?from?all_users; select?*?from?user_users; 1.2?角色 select?*?from?dba_roles; 1.3?权限 分为系统权限与对象权限: select?*?from?system_privilege_map; select?*?from?table_privilege_map; 2?三者之间关系的字典表 这类关系字典表的表名后缀都包含"_privs

Oracle常用的系统权限和对象权限介绍

alter any index 修改任意索引的权限 alter any role 修改任意角色的权限 alter any sequence 修改任意序列的权限 alter any snapshot 修改任意快照的权限 alter any table 修改任意表的权限 alter any trigger 修改任意触发器的权限 alter database 修改数据库的权限 alter procedure 修改拥有的存储过程权限 alter sequence 修改拥有的序列权限 alter sess

Oracle 用户、对象权限、系统权限

--================================ --Oracle 用户.对象权限.系统权限 --================================  一.用户与模式 用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作 SYS用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象 SYSTEM用户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象 模式(schema):是某个用户拥有所有对象的集合.具有创建对象权限并创建

oracle新建对象 权限管理

代码 CREATE USER target IDENTIFIED BY target ; GRANT CONNECT, RESOURCE TO target; 刚刚创建的oracle实例中会内建两个用户:system和sys. (1)新建用户 我们先使用system用户登录oracle实例来新建t_user用户. 新建用户格式:create user 用户名 identified by 密码 ; 如: create user t_user identified by t_user ; 修改用户的

SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)

SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant Gives other users privileges to access the objects Create role Creates a collection of privileges, usually performed by a DBA Alter user Changes a use

oracle用户、角色及权限

1.oracle用户 Oracle 用户分两种,一种是系统用户sys system :另外一种是普通用户: 视图dba_users 存储着所有用户信息: 创建用户: Create user 用户名identified by 密码default tablespace 表空间 授予session 权限:grant create session to TEST; 锁定和开启帐号:alter user TEST account lock / unlock ; 修改用户密码:alter user TEST

Oracle 表空间和用户权限管理【转】

一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻辑结构的一个重要组件. 表空间可以存放各种应用对象,如表.索引等. 而每一个表空间由一个或多个数据文件组成. 1. 表空间的分类 表空间可分为3类: 永久性表空间:一般保存表.上天.过程和索引等数据.system.sysaux.users.example表空间是默认安装的. 临时性表空间:只用于保存

Oracle 用户,角色,权限等

权限管理是 Oracle 系统的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种,如果单独对用户授权,很囧,有一些用户需要的权限是相同的,就把这些用户归为同一类--某种角色,通过设立一些有预定权限的角色简化和明确授权操作,角色出现的动机也就是为了简化权限管理,它是权限的集合.一般做法是:系统把权限赋给角色,然后把角色赋给用户,当然也可以直接把某权限赋给用户.Oracle 提供细粒度的权限,可以对表的某一列单独设置权