oracle权限及角色
oracle的grant用法
oracle的grant用法GRANT是一个Oracle数据库的SQL命令,用于向用户或角色授予特定的系统权限或对象权限。
语法如下:GRANT privilege_name [, privilege_name]...TO user_name [, user_name]...[WITH ADMIN OPTION][ROLE role_name [, role_name]...];其中,- privilege_name 表示要授予的权限,可以是一个或多个权限,例如SELECT、INSERT、UPDATE、DELETE等。
- user_name 表示要授予权限的用户,可以是一个或多个用户,例如SCOTT、HR等。
- WITH ADMIN OPTION表示授予权限的用户能够将这些权限再授予给其他用户。
- ROLE role_name表示要授予的角色,可以是一个或多个角色。
以下是一些示例:1. 授予用户SCOTT对表EMP的SELECT权限:GRANT SELECT ON EMP TO SCOTT;2. 授予用户HR对表DEPT的SELECT和INSERT权限,并允许其将这些权限再授予其他用户:GRANT SELECT, INSERT ON DEPT TO HR WITH ADMINOPTION;3. 授予角色MANAGER对表EMP的SELECT权限,并授予用户SCOTT该角色:GRANT SELECT ON EMP TO MANAGER;GRANT MANAGER TO SCOTT;4. 授予用户SYSDBA管理员权限:GRANT SYSDBA TO SYS;5. 授予用户DBA所有系统权限:GRANT ALL PRIVILEGES TO DBA;以上只是GRANT命令的一些常见用法示例,实际应用中可以根据具体需求灵活使用。
oracle数据库管理人员权限设置及分配表
一、概述Oracle数据库是当前企业中常用的数据库管理系统之一,而数据库管理人员在企业中扮演着至关重要的角色,他们负责数据库的管理与维护,包括权限设置与分配。
本文将探讨Oracle数据库管理人员权限设置及分配表的相关内容。
二、数据库管理员的权限1. 数据库管理员(DBA)是Oracle数据库中最高权限的用户,具有对数据库进行全面控制的特权。
他们可以创建、修改、删除数据库对象,分配SQL权限,管理数据库用户和角色等。
2. DBA用户的权限通常由系统管理员在安装数据库时创建,或是通过GRANT命令授予。
3. DBA用户可以通过GRANT和REVOKE命令控制其他用户的权限,以及管理数据库对象的安全性。
三、数据库操作员的权限1. 数据库操作员(DBO)是在数据库中具有一定权限的用户,通常负责对数据库进行日常操作。
2. DBO用户可以执行SELECT、INSERT、UPDATE、DELETE等操作,并且可以创建临时表和视图。
3. DBO用户的权限通常由DBA用户通过GRANT命令分配,可以根据需要灵活控制其权限范围。
四、权限设置的最佳实践1. 了解业务需求:在设置数据库用户的权限之前,需要充分了解企业的业务需求,确保每个用户都能够在权限范围内完成工作。
2. 分配最小权限原则:根据最小权限原则,应该仅分配用户所需的最低权限,以降低数据泄露和操作错误的风险。
3. 定期审计权限:定期对数据库用户的权限进行审计,及时发现和修复不合理的权限设置,保障数据库的安全性。
五、权限分配表的编制数据库管理人员需要编制一份权限分配表,清晰地记录每个用户的权限范围,确保权限设置的合理性与一致性。
权限分配表通常包括以下内容:1. 用户名称:列出数据库中所有的用户名称。
2. 权限说明:对用户的权限进行详细说明,包括SELECT、INSERT、UPDATE、DELETE等操作的权限范围。
3. 是否受限:记录是否对用户的权限进行了限制,比如是否禁止用户执行DROP TABLE等危险操作。
oracle 查看用户、权限、角色
查看用户、权限、角色的命令和视图a1.查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户系统权限:select * from dba_sys_privs;select * from session_privs;select * from user_sys_privs;3.查看用户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;4.查看所有角色:select * from dba_roles;5.查看用户所拥有的角色:select * from dba_role_privs;select * from user_role_privs;b概述与权限,角色相关的视图大概有下面这些:DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限USER_SYS_PRIVS: 查询当前用户所拥有的系统权限SESSION_PRIVS: 查询当前用户所拥有的全部权限ROLE_SYS_PRIVS:查询某个角色所拥有的系统权限注意: 要以SYS用户登陆查询这个视图,否则返回空.ROLE_ROLE_PRIVS: 当前角色被赋予的角色SESSION_ROLES: 当前用户被激活的角色USER_ROLE_PRIVS: 当前用户被授予的角色另外还有针对表的访问权限的视图:TABLE_PRIVILEGESALL_TAB_PRIVSROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限oracle与用户角色权限相关的视图Oracle 本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图.一. 概述与权限,角色相关的视图大概有下面这些:1、DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限。
Oracle用户,角色,权限等
Oracle⽤户,⾓⾊,权限等Oracle ⽤户,⾓⾊,权限等权限管理是 Oracle 系统的精华,不同⽤户登录到同⼀数据库中,可能看到不同数量的表,拥有不同的权限。
Oracle 的权限分为系统权限和数据对象权限,共⼀百多种,如果单独对⽤户授权,很囧,有⼀些⽤户需要的权限是相同的,就把这些⽤户归为同⼀类——某种⾓⾊,通过设⽴⼀些有预定权限的⾓⾊简化和明确授权操作,⾓⾊出现的动机也就是为了简化权限管理,它是权限的集合。
⼀般做法是:系统把权限赋给⾓⾊,然后把⾓⾊赋给⽤户,当然也可以直接把某权限赋给⽤户。
Oracle 提供细粒度的权限,可以对表的某⼀列单独设置权限,可以对某⽤户查询某表⾃动增添 where 限制条件。
权限允许⽤户访问属于其它⽤户的对象或执⾏程序,ORACLE系统提供三种权限:Object 对象级、System 系统级、Role ⾓⾊级。
这些权限可以授予给⽤户、特殊⽤户public或⾓⾊,如果授予⼀个权限给特殊⽤户"Public"(⽤户public是oracle预定义的,每个⽤户享有这个⽤户享有的权限),那么就意味作将该权限授予了该数据库的所有⽤户。
对管理权限⽽⾔,⾓⾊是⼀个⼯具,权限能够被授予给⼀个⾓⾊,⾓⾊也能被授予给另⼀个⾓⾊或⽤户。
⽤户可以通过⾓⾊继承权限,除了管理权限外⾓⾊服务没有其它⽬的。
权限可以被授予,也可以⽤同样的⽅式撤销。
Oracle 的⾓⾊存放在表 dba_roles 中,某⾓⾊包含的系统权限存放在 dba_sys_privs 中,包含的对象权限存放在 dba_tab_privs 中。
下⾯是“⾓⾊”、“⽤户”和“权限”的互查:1. ⽤户例:@>conn system/888888Connected.SYSTEM@userdata>create user user50 identified by user50;User created.SYSTEM@userdata>grant connect,resource to user50;Grant succeeded.查看当前登录⽤户拥有的所有⾓⾊和系统权限USER50@userdata>select*from session_privs;PRIVILEGE------------------------------------------------------------------------------------------------------------------------CREATE SESSIONUNLIMITED TABLESPACECREATE TABLECREATE CLUSTERCREATE SEQUENCECREATE PROCEDURECREATE TRIGGERCREATE TYPECREATE OPERATORCREATE INDEXTYPE10 rows selected.USER50@userdata>select*from role_sys_privs;ROLE PRIVILEGE ADMIN_OPT---------------- ------------------------ ---------RESOURCE CREATE SEQUENCE NORESOURCE CREATE TRIGGER NORESOURCE CREATE CLUSTER NORESOURCE CREATE PROCEDURE NORESOURCE CREATE TYPE NOCONNECT CREATE SESSION NORESOURCE CREATE OPERATOR NORESOURCE CREATE TABLE NORESOURCE CREATE INDEXTYPE NO9 rows selected.查看某⼀⽤户所拥有的⾓⾊和系统权限SYSTEM@userdata>select*from dba_role_privs where GRANTEE='USER50';GRANTEE GRANTED_ROLE ADMIN_OPT DEFAULT_R------------------------------ -------------------- --------- ---------USER50 RESOURCE NO YESUSER50 CONNECT NO YESSYSTEM@userdata>select*from dba_sys_privs where GRANTEE='USER50';GRANTEE PRIVILEGE ADMIN_OPT------------------------------ ------------------------------ ---------USER50 UNLIMITED TABLESPACE NO查看某⼀⽤户拥有的对象权限SYSTEM@userdata>grant select on scott.emp to user50;SYSTEM@userdata>select*from dba_tab_privs where GRANTEE='USER50';GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY-------------------- --------------- --------------- --------------- --------------- --------- ---------USER50 SCOTT EMP SCOTT SELECT NO NO2. 权限系统权限:系统规定⽤户使⽤数据库的权限。
oracle 的 grant role to role例子
oracle 的grant role to role例子全文共四篇示例,供读者参考第一篇示例:Oracle数据库中的权限管理是非常重要的,通过合理的授权管理可以确保数据库的安全性和稳定性。
在Oracle中,可以使用grant语句来给用户或角色授予权限。
除了给用户授予权限外,还可以给角色授予权限,并且可以使用grant role to role语句将权限从一个角色授予给另一个角色。
接下来我们将介绍一些关于grant role to role的例子。
让我们创建两个角色,分别为role1和role2,然后给role1授予SELECT权限:```sqlCREATE ROLE role1;CREATE ROLE role2;现在,我们可以使用grant role to role语句将role1的SELECT 权限授予给role2:这样,role2就拥有了和role1相同的SELECT权限。
通过这种方式,可以将权限从一个角色传递给另一个角色,实现权限的继承和管理。
这在管理大型数据库系统中非常有用,可以减少权限管理的工作量,提高系统的安全性和可维护性。
可以利用role继承的特性来简化权限管理工作。
我们可以创建一个专门用于管理财务数据的角色finance_role,然后给它授予所有访问财务数据的权限。
然后再创建一个财务系统管理员的角色finance_admin_role,将finance_role授予给finance_admin_role,这样finance_admin_role就具有了所有访问财务数据的权限,而且可以管理其他财务系统管理员的权限。
下面是具体的实现步骤:-- 给finance_role授予访问财务数据的权限GRANT SELECT, INSERT, UPDATE, DELETE ON finance_table TO finance_role;-- 将finance_role授予给finance_admin_roleGRANT finance_role TO finance_admin_role;```通过这种方式,可以将权限细化到不同的角色中,将数据库对象的访问权限和管理权限分离开来,提高了系统的安全性和可管理性。
oracle赋权方法
oracle赋权方法Oracle是一种关系型数据库管理系统,它提供了一种灵活且安全的赋权机制,可以控制用户对数据库对象的访问权限。
本文将介绍Oracle中常用的赋权方法。
1. 创建用户和角色:在Oracle中,可以使用CREATE USER语句创建用户,并使用CREATE ROLE语句创建角色。
用户可以拥有角色,而角色可以拥有权限。
创建用户和角色的语法如下:```CREATE USER username IDENTIFIED BY password; CREATE ROLE role;```2. 授权角色权限:可以使用GRANT语句将权限授予角色。
例如,将SELECT权限授予角色read_role:```GRANT SELECT ON table_name TO read_role;```3. 授权用户角色:可以使用GRANT语句将角色授予用户。
例如,将read_role角色授予用户username:```GRANT read_role TO username;```4. 授予用户直接权限:可以使用GRANT语句将权限直接授予用户。
例如,将SELECT权限直接授予用户username:```GRANT SELECT ON table_name TO username;```5. 撤销角色权限:可以使用REVOKE语句撤销角色的权限。
例如,撤销read_role角色的SELECT权限:```REVOKE SELECT ON table_name FROM read_role;```6. 撤销用户角色:可以使用REVOKE语句撤销用户的角色。
例如,撤销用户username的read_role角色:```REVOKE read_role FROM username;```7. 撤销用户直接权限:可以使用REVOKE语句撤销用户的直接权限。
例如,撤销用户username的SELECT权限:```REVOKE SELECT ON table_name FROM username;```8. 查看用户权限:可以使用SELECT语句查询用户拥有的权限。
Oracle创建用户、角色、授权、建表
Oracle创建⽤户、⾓⾊、授权、建表Oracle创建⽤户、⾓⾊、授权、建表Devin01213 2019-05-16 10:21:49 21510 收藏 32分类专栏: Oracle版权oracle数据库的权限系统分为系统权限与对象权限。
系统权限( database system privilege )可以让⽤户执⾏特定的命令集。
例如,create table权限允许⽤户创建表,grant any privilege 权限允许⽤户授予任何系统权限。
对象权限( database object privilege )可以让⽤户能够对各个对象进⾏某些操作。
例如delete权限允许⽤户删除表或视图的⾏,select权限允许⽤户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。
每个oracle⽤户都有⼀个名字和⼝令,并拥有⼀些由其创建的表、视图和其他资源。
oracle⾓⾊(role)就是⼀组权限(privilege)(或者是每个⽤户根据其状态和条件所需的访问类型)。
⽤户可以给⾓⾊授予或赋予指定的权限,然后将⾓⾊赋给相应的⽤户。
⼀个⽤户也可以直接给其他⽤户授权。
⼀、登录sqlplus sys/sys as sysdba;1、创建⽤户create user test identified by test;这样就创建了⼀个⽤户名密码都为test的⽤户但这个时候test还是不能登陆成功的,我们需要赋予相应的权限2、赋予create session 的权限grant create session to test;这样test⽤户就能成功登录进去赋予⽤户创建表的权限grant create table to test;赋予相应的权限grant unlimited tablespace to test;这个时候⽤户就拥有了创建表的权限由于表是⽤户test的,相应的他就拥有了对创建的表的增删查改的权限了3、撤销权限revoke create table from test;⼆、删除⽤户drop user ⽤户名;若⽤户拥有对象,则不能直接删除,否则将返回⼀个错误值。
Oracle中connect权限
Oracle中connect,resource角色权限connect resource权限grant connect,resource to user;执行上面的sql语句后用户包括的权限:CONNECT角色:--是授予最终用户的典型权利,最基本的ALTER SESSION --修改会话CREATE CLUSTER --建立聚簇CREATE DATABASE LINK --建立数据库链接CREATE SEQUENCE --建立序列CREATE SESSION --建立会话CREATE SYNONYM --建立同义词CREATE VIEW --建立视图RESOURCE角色:--是授予开发人员的CREATE CLUSTER --建立聚簇CREATE PROCEDURE --建立过程CREATE SEQUENCE --建立序列CREATE TABLE --建表CREATE TRIGGER --建立触发器CREATE TYPE --建立类型从dba_sys_privs里可以查到:SQL> select grantee,privilege from dba_sys_privs where grantee='RESOURCE' order by privilege;GRANTEE PRIVILEGE------------ ----------------------RESOURCE CREATE CLUSTERRESOURCE CREATE INDEXTYPERESOURCE CREATE OPERATORRESOURCE CREATE PROCEDURERESOURCE CREATE SEQUENCERESOURCE CREATE TABLERESOURCE CREATE TRIGGERRESOURCE CREATE TYPE已选择8行。
1.查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户或角色系统权限:select * from dba_sys_privs;select * from user_sys_privs;3.查看用户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;4.查看所有角色:select * from dba_roles;5.查看用户或角色所拥有的角色:select * from dba_role_privs;select * from user_role_privs;注意:1、以下语句可以查看Oracle提供的系统权限select name from sys.system_privilege_map2、查看一个用户的所有系统权限(包含角色的系统权限)select privilege from dba_sys_privs where grantee='DATAUSER'union select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='DATAUSER' );。
Oracle内置角色connect与resource的权限
以上是角色的一个典型用途。其实,只要明白:角色就是一组权限的集合。下面分两个部门来对oracle角色进行说明。
5.创建带有口令以角色(在生效带有口令的角色时必须提供口令)
sql>create role role1 identified by password1;
6.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;
7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.
二、管理角色
1.建一个角色
3. DBA用户可以操作全体用户的任意基表(无需授权,包括删除):
2. 将表的操作权限授予全体用户:
SQL> grant all on product to public; // public表示是所有的用户,这里的all权限不包括drop。
[实体权限数据字典]:
SQL> select owner, table_name from all_tables; // 用户可以查询的表
3、系统权限传递:
增加WITH ADMIN OPTION选项,则得到的权限可以传递。
Oracle用户角色与权限控制
alter user system identified by abc123;
12.2 权限
权限(Privilege)的最终作用对象是用户。即所有用 户在数据库内的操作对象和可执行的动作都是受到限制的。 Oracle中共有两种权限:系统权限和对象权限。
select * from system.t_employees order by employee_id;
12.3.2 继承角色
角色继承是指一个角色可以继承其他角色的权限信息, 从而减少自身使用grant的机会。
create role role_hr;
grant role_employee to role_hr;
grant update, insert on t_employees to role_hr;
select table_name, grantee, grantor, privilege from dba_tab_privs where table_name = 'T_EMPLOYEES';
create user cat identified by abc;
grant create session to cat;
grant role_hr to cat;
update system.t_employees set status = 'CXL' where employee_id = 13;
12.3.3 禁用和启用角色
每个用户登录数据库时,都可以获得其默认角色。可以 通过查询视图session_roles来获得当前会话下该用户的默 认角色。管理员可以禁用用户的默认角色,一旦禁用,则用 户从该角色获得的权限将不再有效。
ORACLE的CONNECT和RESOURCE角色权限
ORACLE的CONNECT和RESOURCE⾓⾊权限最近在处理数据库的⽤户权限问题,之前惯性思维,觉得给⽤户授权RESOURCE权限之后,⽤户的⼀般权限都会有,等到发现⽤户有RESOURCE⾓⾊,却没有创建视图的权限之后,才发现这部分还是⼀知半解啊,所以此处整理了⼀下相关的CONNECT⾓⾊和RESOURCE⾓⾊的内容。
⼀般情况下,在新建数据库⽤户后,都会习惯性的给⽤户授权CONNECT⾓⾊和RESOURCE⾓⾊:GRANT connect,resource TO⽤户;但是拥有这两个⾓⾊的⽤户都拥有什么权限呢?可以使⽤如下语句查看⼀下:SELECT*FROM dba_sys_privs WHERE grantee IN ('RESOURCE', 'CONNECT') ORDER BY1;从查询结果可以看到:CONNECT⾓⾊:仅具有创建SESSION的权限RESOURCE⾓⾊:仅具有创建CLUSTER,INDEXTYPE,OPERATOR,PROCEDEURE,SEQUENCE,TABLE,TRIGGER,TYPE的权限。
同时,当把ORACLE resource⾓⾊授予⼀个user的时候,不但会授予ORACLE resource⾓⾊本⾝的权限,⽽且还有unlimited tablespace权限,但是,当把resource授予⼀个role时,就不会授予unlimited tablespace权限。
确实没有创建视图的权限,由此看来如果需要创建视图权限,只能单独授权:GRANT CREATE VIEW TO⽤户;那么,⼀个⽤户,如果查看他拥有什么权限呢?⽅法⼀:PLSQL Developer⼯具在PLSQL Developer中可以很⽅便的查看⽤户的各种类型权限(包括对象权限,⾓⾊权限,系统权限),如下图:⽅法⼆:SQL查询语句查询对象权限:SELECT*FROM dba_tab_privs a WHERE a.grantee ='⽤户名';查询⾓⾊权限:SELECT*FROM dba_role_privs a WHERE a.GRANTEE ='⽤户名';查询系统权限:SELECT*FROM dba_sys_privs a WHERE a.GRANTEE ='⽤户名';。
oracle 控制权限的语句
oracle 控制权限的语句
在Oracle中,可以使用以下语句来控制权限:
1. GRANT:授予用户或角色特定的权限。
例如:GRANT SELECT, INSERT ON table_name TO
user_name;
GRANT role_name TO user_name;
2. REVOKE:撤销用户或角色的权限。
例如:REVOKE SELECT, INSERT ON table_name FROM user_name;
REVOKE role_name FROM user_name;
3. CREATE USER:创建新用户。
例如:CREATE USER user_name IDENTIFIED BY password;
4. ALTER USER:修改用户属性。
例如:ALTER USER user_name PASSWORD EXPIRE;
ALTER USER user_name DEFAULT TABLESPACE
new_tablespace;
5. CREATE ROLE:创建新角色。
例如:CREATE ROLE role_name;
6. GRANT ROLE:授予角色给用户。
例如:GRANT role_name TO user_name;
7. SET ROLE:启用角色。
例如:SET ROLE role_name;
8. DROP USER:删除用户。
例如:DROP USER user_name;
这些语句可以帮助管理员在Oracle数据库中控制用户和角色的权限。
请注意,执行这些语句需要具有相应的特权。
oracle grant 的规则
Oracle数据库中grant是用来赋予用户或角色对数据库对象进行访问和操作的权限的命令。
在Oracle数据库中,grant权限有一定的规则和限制,本文将对Oracle grant的规则进行详细的介绍。
一、权限的种类1.1 数据库级的权限在Oracle数据库中,grant权限可以分为数据库级的权限和对象级的权限。
数据库级的权限包括CREATE SESSION、ALTER SYSTEM、GRANT ANY PRIVILEGE等。
这些权限是针对整个数据库的,只有具有这些权限的用户或角色才能进行相应的操作。
1.2 对象级的权限对象级的权限是针对具体的数据库对象,如表、视图、存储过程等。
常见的对象级权限包括SELECT、INSERT、UPDATE、DELETE等。
这些权限控制了用户对于特定对象的访问和操作权限。
二、grant权限的语法2.1 给用户授权权限grant权限的语法是:GRANT privilege ON object TO user;其中,privilege表示要授予的权限,可以是数据库级的权限,也可以是对象级的权限;object表示要授权的对象,可以是表、视图、存储过程等;user表示被授权的用户。
2.2 给角色授权权限与给用户授权类似,给角色授权的语法是:GRANT privilege ON object TO role;其中,role表示被授权的角色。
2.3 with grant option在grant权限的语法中,还可以使用with grant option来允许被授权的用户或角色将权限再授予给其他用户或角色,语法为:GRANT privilege ON object TO user WITH GRANT OPTION;三、grant权限的规则和限制3.1 grant权限的层级在Oracle数据库中,权限是按照层级进行继承和控制的。
数据库级的权限是最高级的,只有具有数据库级权限的用户或角色才能授予其他用户或角色相应的权限。
Oracle命令:授权-收回权限-角色
Oracle命令:授权-收回权限-⾓⾊oracle grant不论授予何种权限,每条授权(grant)语句总是由三部分组成:1) 接受者部分是准备获得权限的⼀个或多个⽤户的列表。
2)关键字权限部分由grant后跟⼀种或多种权限组成。
如果在同⼀条grant语句中有多个权限,权限之间⽤逗号分隔。
3) 表名部分由关键字o n起头并列出准备在其上授权的表。
看下⾯的详细介绍,主要是介绍如何把添加、删除、修改、查询四种权限授予⽤户,如下:⼀、insertinsert权限允许在其他⽤户的表中建⽴⾏。
语句grant insert on sample_a to public;允许所有⽤户在sample_a中建⽴新的⾏。
Oracle允许在单条grant语句中授多个权限,SQL语句grant insert,select on sample_a to public;等价于两个语句:grant select on sample_a to public;语句和grant insert on sample_a to ublic;语句。
⼆、updateupdate权限允许其他⽤户修改⾮⾃⼰表中的数据。
语句grant update on sample_a teplownd;允许⽤户teplownd修改表sample_a中的信息。
三、selectselect权限允许⽤户查看其他⽤户表中的内容。
语句grant select on sample_3 to public;将允许所有⽤户浏览表sample_3中的内容,⽽语句grant select on sample_3 to ops$rosenberge,ops$abbeyms;则只允许两个⽤户查看表sample_3中的内容。
注意,当多个⽤户接受授权时,⽤户名之间要⽤逗号分隔。
提⽰以public为授权对象时,所有数据库⽤户都获得指定的权限。
如果⽤户的数据库有15000个⽤户,则单独授权就需要15000次(每个⽤户⼀次),⽽授权给public,⼀次即可。
Oracle数据库的用户和权限管理
5.2.2 创建角色
使用CREATE ROLE语句可以创建一个新的角色,执行该语 句的用户必须具有CREATE ROLE系统权限。
在角色刚刚创建时,它并不具有任何权限,这时的角色是 没有用处的。因此,在创建角色之后,通常会立即为它授予权 限。例如:利用下面的语句创建了一个名为OPT_ROLE的角色, 并且为它授予了一些对象权限和系统权限:
ORACEL利用角色更容易地进行权限管理。有下列优点: (1)减少权限管理,不要显式地将同一权限组授权给 几个用户,只需将这权限组授给角色,然后将角色授权给 每一用户。 (2)动态权限管理,如果一组权限需要改变,只需修 改角色的权限,所有授给该角色的全部用户的安全域将自 动地反映对角色所作的修改。 (3)权限的选择可用性,授权给用户的角色可选择地 使其可用或不可用。 (4)应用可知性,当用户经用户名执行应用时,该数 据库应用可查询字典,将自动地选择使角色可用或不可用。 (5)应用安全性,角色使用可由口令保护,应用可提 供正确的口令使用角色,如不知其口令,不能使用角色。
系统权限可授权给用户或角色,一般,系统权限只授 予管理人员和应用开发人员,终端用户不需要这些相关功 能。 2)对象权限:在指定的表、视图、序列、过程、函数或包 上执行特殊动作的权利。
2.角色 为相关权限的命名组,可授权给用户和角色。数据库角 色包含下列功能: (1)一个角色可授予系统权限或对象权限。 (2)一个角色可授权给其它角色,但不能循环授权。 (3)任何角色可授权给任何数据库用户。 (4)授权给用户的每一角色可以是可用的或者不可用 的。一个用户的安全域仅包含当前对该用户可用的全部角 色的权限。 (5)一个间接授权角色对用户可显式地使其可用或不 可用。 在一个数据库中,每一个角色名必须唯一。角色名与用 户不同,角色不包含在任何模式中,所以建立角色的用户 被删除时不影响该角色。
oracle 权限字段
oracle 权限字段
Oracle数据库中的权限字段包括以下几种:
1. SELECT,允许用户查询表中的数据。
2. INSERT,允许用户向表中插入新的数据。
3. UPDATE,允许用户更新表中已有的数据。
4. DELETE,允许用户删除表中的数据。
5. CREATE TABLE,允许用户创建新的表。
6. CREATE VIEW,允许用户创建视图。
7. CREATE SESSION,允许用户登录到数据库。
8. ALTER TABLE,允许用户修改表的结构。
9. DROP TABLE,允许用户删除表。
10. INDEX,允许用户创建索引。
除了上述基本的权限字段外,Oracle还支持更细粒度的权限控制,可以通过角色和权限分配来实现更灵活的权限管理。
此外,Oracle还支持对存储过程、函数等数据库对象设置执行权限,以及对表空间、数据库链接等资源的权限控制。
在Oracle数据库中,权限字段的授予和撤销是通过GRANT和REVOKE语句来实现的。
管理员可以使用这些语句来授予或收回用户或角色的特定权限,从而实现对数据库的权限管理。
总的来说,Oracle数据库中的权限字段涵盖了对数据库对象和资源的各种操作权限,管理员可以根据实际需求灵活地进行权限控制和管理。
oracle权限分配
我们将从创建Oracle用户权限表开始谈起,然后学习登陆等一般性动作,使大家对Oracle用户权限分配控制有个深入的了解。
一、创建sys; //系统管理员,拥有最高权限system;//本地管理员,次高权限scott; //普通用户,密码默认为tiger,默认未解锁二、登陆sqlplus / as sysdba; //登陆sys帐户sqlplus sys as sysdba;//同上sqlplus scott/tiger; //登陆普通用户scott三、管理用户create user zhangsan;//在管理员帐户下,创建用户zhangsanalert user scott identified by tiger;//修改密码四,授予权限1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限/*管理员授权*/grant create session to zhangsan; //授予zhangsan用户创建session 的权限,即登陆权限grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限grant create table to zhangsan;//授予创建表的权限grante drop table to zhangsan; //授予删除表的权限grant insert table to zhangsan;//插入表的权限grant update table to zhangsan;//修改表的权限grant all to public; //这条比较重要,授予所有权限(all)给所有用户(public)2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权/*oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的*/grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限grant drop on tablename to zhangsan;//授予删除表的权限grant insert on tablename to zhangsan;//授予插入的权限grant update on tablename to zhangsan;//授予修改表的权限grant insert(id) on tablename to zhangsan;grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和updategrant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限五、撤销权限基本语法同grant,关键字为revoke六、查看权限select * from user_sys_privs;//查看当前用户所有权限select * from user_tab_privs;//查看所用用户对表的权限七、操作表的用户的表/*需要在表名前加上用户名,如下*/select * from zhangsan.tablename;八、权限传递即用户A将权限授予B,B可以将操作的权限再授予C,命令如下:grant alert table on tablename to zhangsan with admin option;//关键字 with admin optiongrant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似九、角色角色即权限的集合,可以把一个角色授予给用户create role myrole;//创建角色grant create session to myrole;//将创建session的权限授予myrole grant myrole to zhangsan;//授予zhangsan用户myrole的角色drop role myrole;删除角色/*但是有些权限是不能授予给角色的,比如unlimited tablespace和any 关键字*/。
Oraclesys和system用户
启动过程实例启动→·装载数据库→·打开数据库sysdba,是管理orac le实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在,以sysdba身份登陆,装载数据库、打开数据库。
只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础!默认密码:sys change_on_install (意思是安装时改变,我改成zxsz4084)system managerscott tiger在10g里面,sys用户必须以sysdb a/sysoper身份登陆数据库。
解决办法 sqlplussys/zxsz4084 as sysdba再说后者。
一看你的sys tem用户密码就是错误得,你说你在安装时候改过密码,应该就是和你的sys用户密码一样得,应该是zxsz4084,而不是默认得密码manag er,你要是是对sy stem用户进行解锁的话,系统自然要提醒你修改密码,所以密码应该不是manag er。
概念:SYS用户是O racle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户。
在数据库安装完之后,应立即修改SY S,SYSTEM这两个用户的口令,以保证数据库的安全。
可以用三种方法修改口令:sqlplus / as sysdba;1.sql> alter user sys identif ied by 1234562.sql>grant connect to sys identif ied by 1234563.sql>passwor d system(注:此命令只适用于SYSTEM)SYS和SYS TEM用户之间可以相互修改口令但是请注意,将修改完口令修改成123456后,按以下几种方法登录:sqlplus / as sysdba;sqlplus sys/abcde as sysdba;sqlplus sys/ as sysdba;sqlplus sys as sysdba;都可以登录成功,然后查看当前用户:sql>show user显示user is 'SYS'。
OracleGrant与Revoke的用法
OracleGrant与Revoke的⽤法⼀、权限是⽤户对⼀项功能的执⾏权⼒。
在Oracle 中,根据系统管理⽅式不同,将权限分为系统权限与实体权限两类。
系统权限是指是否被授权⽤户可以连接到数据库上,在数据库中可以进⾏哪些系统操作。
实体权限是指⽤户对具体的模式实体 (schema)所拥有的权限。
这样讲可以有些模糊。
举个例⼦来说:select any table是系统权限,它表⽰可以查看任何表。
⽽select on table1是实体权限,表⽰对表table1的查询权限。
⼆、见下下⾯的表三、系统权限授权命令的使⽤语法:GRANT 权限名 TO ⽤户|⾓⾊|PUBLIC其中,PUBLIC表⽰将权限赋给数据库中所有的⽤户例:赋给⽤户USER1权限CREATE TABLE的授权命令如下:SQL>GRANT CREATE TABLE TO USER1;授权语句还可以增加WITH ADMIN OPTION选项,表⽰被授权的⽤户可以将它所得权限赋给其它⽤户,如:SQL>GRANT CREATE TABLE,CREATE VIEW TO USER1,USER2 WITH ADMIN OPTION;若要了解各⽤户所拥有的系统权限,可以查询数据字典USER_SYS_PRIVS、ROLE_SYS_PRIVS。
若要回收权限,则使⽤REVOKE命令,如:SQL>REVOKE CREATE TABLE FROM USER1;四、实体权限管理 实体权限是指某⼀⽤户对某⼀特定schema对象的操作权限。
1.实体权限分类 不同的实体类型有不同的实体权限,如下表2.实体权限的授命令语法如下:GRANT 实体权限名|ALL TO ⽤户|⾓⾊|PUBLIC其中,ALL表⽰实体的所有实体权限。
如:SQL>GRANT SELECT ON BOOKS_QUTHORS TO USER1;以下语句⽤来查询表的实体权限的授权信息:SQL>SELECT * FROM USER_TAB_PRIVES若要回收实体权限,使⽤REVOKE,其语法如下:REVOKE 实体权限名|ALL ON 实体名 FROM ⽤户名|⾓⾊名|PUBLIC。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
角色是相关权限的集合,使用角色能够简化权限的管理。
简而言之就是oracle 可以事先把一系列权限集中在一起(角色),打包赋予给用户,那么用户就具有了角色的一系列权限。
oracle预定义角色有25种,它是oracle提供的角色。
经常用到的角色有connect、resource、dba三种角色。
建一个用户,多数情况下,只要给用户赋予connect和resource角色就够了。
connect角色具有一般应用开发人员需要的大部分权限,connect角色具有的系统权限如下:
alter session
create cluster
create database link
create session
create table
create view
create sequence
resource角色具有开发人员需要的其他权限,如建立存储过程、触发器等,resource角色等,resource角色隐含了unlimited tablespace系统权限(无限制表空间),resource的系统权限有:
create cluster
create indextype
create table
create sequence
create type
create procedure
create trigger
dba角色具有所有系统权限及with admin option选项,默认dba用户为sys和system,它们可以将任何系统权限授予给其他用户。
但是dba角色不具备sysdba 和sysoper的权限,即启动和关闭数据库。
select*from tab;
--查询所有的用户
select*from dba_users;
--查询所有的角色
select*from dba_roles;
-- 权限有140多种,要赋值给用户,使用sql grant sql语句,太麻烦,产生角色概念(23种角色),先把权限赋值给角色,比如说connect
角色(包含7中权限)
--,把角色赋值给用户
-- 创建xiaoming用户(使用的是sys账户)
-- create user xiaoming identified by 123456;
--目前的小名是无法登陆的oracle ,提示没有session权限
-- grant create session to xiaoming; 把session登陆数据库的权限给小名(权限140多种)
--connect 角色包含了sesison权限和另外的6种权限
--把connect 角色赋值给xiaoming xiaoming就可以登陆数据库,在吧resource 角色赋值给xiaoming,可以创建表触发器、存储过程等等
--grant connect,resource to xiaoming;
-- 目前 xiaoming与 scott 同处在users表空间下面,但是不能相互访问
-- 可以通过sys 或者scott用户给xiaoming 赋值查询的权限
-- grant select on emp to xiaoming;
-- 登陆xiaoming 查询 scott,下面的emp表
-- select * from scott.emp;。