oracle用户权限管理分解
- 格式:ppt
- 大小:515.50 KB
- 文档页数:32
一、概述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 管理对象权限对象权限指访问其他用户模式对象的权利。
在Oracle数据库中,用户可以直接访问其模式对象,但如果要访问其他用户的模式对象时,必须具有相应的对象权限。
1.对象权限的分类根据不同的对象类型,Oracle数据库设置了不同类型的对象权限。
对象权限及对象之间的对应关系如表13-5所示。
表13-5 对象、对象权限的对应关系ALTE R DELETEEXECUTEINDEXINSERTRREADREFERENCESELECTUPDA TEDIRECTORY√FUNCTION √PROCEDURE√PACKAGE √SEQUENCE √√TABLE √√√√√√√VIEW √√√√其中,“√”表示某种对象所具有的对象权限,空格表示该对象没有某种权限。
例如,对于基本表TABLE,具有ALTER、DELETE、INDEX、INSERT、REFERENCES、SELECT、UPDATE权限,而没有EXECUTE权限。
多种权限组合在一起时,可以使用ALL关键字,表示该对象的全部权限,对于不同的对象,ALL组合的权限数量是不相同的。
对于表TABLE而言,ALL表示ALTER、DELETE、INDEX、INSERT、REFERENCES、SELECT、UPDATE权限;对于存储过程,ALL只代表EXECUTE权限。
2.授予对象权限对象权限由该对象的拥用者为其他用户授权,非对象的拥有者不得向其他用户授予对象授权。
将对象权限授出后,获权用户可以对对象进行相应的操作,没有授予的权限不得操作。
从Oracle 9i开始,DBA用户可以将任何对象权限授予其他用户。
授予对象权限所使用的GRANT语句形式如下:grant { object_priv [ (column_list) ] [,object_priv[(column_list)]]….| ALL [PRIVILEGES] ON [ schema.]objectTO { user | role | PUBLIC} [,{user | role | public}] …[with grant option]其中,OBJECT_PRIV是对象权限,COLUMN_LIST用于标识权限所对应列的列表,SCHEMA表示模式名,USER表示被授权的用户,ROLE表示被授权的角色。
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 里要给用户分配权限,那可真是一门学问呢!就好像你要给一个小伙伴分配任务一样,得搞清楚该给啥权限,不能多也不能少。
比如说,你想让某个用户能查看一些特定的数据,那就得用合适的语句来给他这个权限。
“GRANT SELECT ON table_name TOuser_name;”,看,这就是一条简单的分配读权限的语句啦。
就好像你给朋友一把钥匙,让他能打开特定的那扇门去看看里面的东西。
但要是想让用户能修改数据呢,那就得用不同的语句啦,“GRANT INSERT, UPDATE ON table_name TO user_name;”。
这就好比你不仅给了朋友钥匙,还告诉他可以在里面动点小手脚,改改东西呢。
哎呀,这可真不是随随便便就能搞对的呀!要是不小心给错了权限,那不就乱套了嘛!就像你本想让朋友帮忙打扫下客厅,结果不小心让他能随便进卧室翻东西了,那可不行呀!而且,分配权限的时候还得考虑周全,不能只看眼前。
比如说,以后这个用户的职责会不会变呀,到时候权限是不是又得重新调整呢。
这就跟你给朋友安排任务一样,一开始可能只让他做一件事,后来发现他还能做更多,或者原来的任务不需要他做了,那权限不就得跟着变嘛。
在 Oracle 中分配用户权限语句真的是非常重要的呀!这可关系到整个数据库的安全和正常运行呢。
要是权限分配得不合理,那可能会带来很多麻烦,甚至会导致数据泄露或者错误。
所以呀,我们可得认真对待,就像对待我们最珍视的宝贝一样,小心翼翼地去设置好每一个权限。
总之,Oracle 分配用户权限语句这事儿,可真是既有趣又充满挑战呢!我们得好好研究,才能把它玩转,让数据库乖乖听话呀!。
oracle⽤户管理,授权与回收权限⼀. ⽤户管理参数,0.删除⽤户: drop user ⽤户名 [cascade] 当我们删除⽤户时, 如改⽤户已创建过数据对象, 那么删除⽤户时必须加cascade参数, ⽤来同步删除 改⽤户的所有信息. 如还想使⽤该⽤户的数据, 则不可删除⽤户, 可以冻结该⽤户即可.1.创建⽤户⽅法⼀: create user ⽤户名 identified by 密码 ; # 创建⽤户, 但缺少必要的东西, 完整命令看下⾯. 创建的⽤户没有任何权限.ORA-01045: user QUZQ lacks CREATE SESSION privilege; logon denied 需要dba给新建的⽤户进⾏授权,如下: 基本语法: grant 权限/⾓⾊ to ⽤户 grand connect to ⽤户名 # 授权可以链接数据库 grand resource to ⽤户名 # 授权建表⽆空间⼤⼩的限制 grand dba to ⽤户名 # 设置⽤户为dba grand create session to ⽤命名 # create session权限即登陆数据库实列 使⽤revoke命令可回收权限或⾓⾊, 语法: revoke 权限/⾓⾊ from ⽤户 ⾓⾊就是权限的⼀个集合, ⾓⾊分为预先定义(即oracle定义的) 和⾃定义的2.创建⽤户⽅法⼆: sql > create user ⽤户名 identified by 密码 default tabspace users # 指定新建⽤户的表空间为users, users是oracle⾃带的⼀个表空间 temporary tablespace temp # 指定临时表空间为temp, temp空间也是oracle⾃带的 quota 3m on users; # ⽤来限制改⽤户创建的数据对象最⼤只能是3M3.oracle中⽤户的权限管理概念图如下:⼆. ⽤户⽅案 oracle会给每个⽤户创建个⽅案(⽅案可理解为⽤户的独⽴存储空间; 把oracle⽐喻成⼀个⼤房⼦, 那⽅案就相当于是⼤房⼦ 中隔出来的⼩房⼦, 每当添加个oracle⽤户时, 就会在⼤房⼦⾥隔出个⼩屋), 当然前提是该⽤户要创建数据对象, 不然是不会 被分配⽅案的. 每个⽤户的⽅案都是隔离的, 各个⽅案中的表名都可以相同; oracle给⽤户创建的⽅案名同⽤户名. 1. 现有两个⽤户, user1和user2, 如何实现user1来访问user2中的stu表呢? 正常情况这两⽤户是不能互相访问的. ⾸先使⽤user2登陆, 执⾏授权命令,如下: grant select [update | delete | insert | all ] on stu to user1 # 参数为all时, 表⽰增删改查 然后使⽤user1登陆, 执⾏相应命令, 语法如下: select * from user2.stu # select * from ⽅案名.表明 2. 有三个⽤户, user1和user2和user3, 如何把user1的stu表权限给user2,并由user2再把user1的stu表权限给user3呢 这⾥涉及两个命令: with admin option # 如果是⽀配系统权限, 则使⽤这个命令; ⽤于系统权限 with grant option # 得到权限的⽤户, 可继续分配权限, 即有⽀配所得权限的能⼒; ⽤于对象权限 grant all on user1.stu to user2 with grant option # 登陆user1前提下给user2⽀配stu表和crud该表的能⼒ grant all on user1.stu to user3 # 登陆user2把user1的stu表增删该查权限给user3, 但user3⽆再分配权限的能⼒三. ⽤户管理之限制登陆次数, 锁定账户时长 1. 创建profile限制集合, ⽤于配置限制的设置 create profile 集合名 limit failed_login_attempts 3 password_lock_time 2; limit failed_login_attempts 3 # 限制登陆次数为3 password_lock_time 2 # 3次失败后账户锁定2天 2. 把创建好的限制集合分配给⽤户user1 alter user user1 profile 集合名; 3. profile是⼝令限制.资源限制的命令集合, 当建⽴⽤户没有指定frofile选项, oracle将会产⽣个名为default的profile, 并将该default分配给⽤户.。
为了规范数据库用户的操作,特制订如下规范:一、每个系统建立自己的数据库文件和索引文件,每个文件不允许超过2G,不支持自动扩展,系统根据自己的情况申请相应大小的数据文件;创建文件系统的命令为:(1)创建表空间Create tablespace coredb_data logging datafile'/home/oracle/oracle/product/10.2.0/oradata/orcl/coredb_data01.dbf'size 2G autoextend off(2)创建索引空间Create tablespace coredb_idx logging datafile'/home/oracle/oracle/product/10.2.0/oradata/orcl/coredb_idx01.dbf'size 1G autoextend off(3)增扩表空间alter tablespace coredb_idx add datafile'/home/oracle/oracle/product/10.2.0/oradata/orcl/coredb_idx02.dbf' size 2Gautoextend off(4)查看表空间select dbf.tablespace_name,dbf.totalspace "总量(M)",dbf.totalblocks as 总块数,dfs.freespace "剩余总量(M)",dfs.freeblocks "剩余块数",(dfs.freespace / dbf.totalspace) * 100 "空闲比例"from (select t.tablespace_name,sum(t.bytes) / 1024 / 1024 totalspace,sum(t.blocks) totalblocksfrom dba_data_files tgroup by t.tablespace_name) dbf,(select tt.tablespace_name,sum(tt.bytes) / 1024 / 1024 freespace,sum(tt.blocks) freeblocksfrom dba_free_space ttgroup by tt.tablespace_name) dfswhere trim(dbf.tablespace_name) = trim(dfs.tablespace_name)二、创建用户的命令使用ORACLE用户执行如下命令(无DBA权限):sqlplus '/as sysdba' <<!drop user <user> cascade;create user <user> identified by <user> default tablespace coredb_data temporary tablespace temp;grant connect to <user>;grant resource to <user>;grant create session to <user>;grant create view to <user>;alter user <user> quota unlimited on coredb_idx;alter user <user> quota unlimited on coredb_data;!三、检查用户是否有DBA权限select * from sys.dba_role_privs where granted_role='DBA';GRANTEE GRANTED_ROLE ADM DEF------------------------------ ------------------------------ --- ---------------------- SYSTEM DBA YES YESGLSDB DBA YES YESSHENG DBA YES YESSYS DBA YES YES COREDB DBA YES YES四、去除DBA权限1)Sqlplus “/as sysdba”2)revoke dba from <user>;3)exit;五、用户的权限(1)查看用户权限;(2)增加用户权限;当系统报错:ORA-01031: 权限不足grant create any synonym to dhrep;//增加同义词权限(3)解除用户权限;五、异常情况的处理(1)ora-01045:user system lacks create session privilege; logon denied 解决办法:1)使用oracle 用户执行sqlplus “/as sysdba”2)grant create session,resource to <user>;3)exit;(2)ORA-1536:space quota exceeded for tablespace解决办法:1)使用oracle 用户执行sqlplus “/as sysdba”2)Grant unlimited tablespace to <user>;3)Exit;(3)ORA-01950: 对表空间'USERS' 无权限解决办法:1)使用oracle 用户执行sqlplus “/as sysdba”2)Conn <user>/<passwd>;3)select * from user_sys_privs;USERNAME PRIVILEGE ADM-----------------------------------------------------coredb CREATE SESSION NO4)grant connect,resource,create session,create view to glsdb_hn;5)select * from user_sys_privs;USERNAME PRIVILEGEADM------------------------ ---------------------------------------- ---coredb_HN CREATE VIEW NOcoredb_HN CREATE SESSION NOcoredb_HN UNLIMITED TABLESPACE NO 6)Exit;(4)没有DBA权限后,如果涉及跨db_user访问其他用户的,需要以下方法:1)创建存储过程将两个用户名作为参数传给存储过程:/*把用户(From_user)所有表的读写权限赋给用户(To_user)的存储过程为*/create or replace procedure grantUser(From_user in varchar2, To_user in varchar2) isretval number;scursor int;v_tablename VARCHAR2(60);sqlstr varchar2(200);cursor c_tablename is select table_name from dba_tables where owner=From_user; BEGINfor v_tablename in c_tablenameloopsqlstr := 'grant select,delete,update,insert on '|| From_user||'.'||v_tablename.table_name || ' to '||To_user;scursor := dbms_sql.open_cursor;dbms_sql.parse(scursor,sqlstr, dbms_sql.native);retval := dbms_sql.execute(scursor);dbms_sql.close_cursor(scursor);end loop;exceptionWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');WHEN TOO_MANY_ROWS THENDBMS_OUTPUT.PUT_LINE('程序运行错误!请使用游标');WHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('发生其它错误!');END grantUser;//*把用户(From_user)所有表的读写权限从用户(To_user)收回的存储过程为*/ create or replace procedure revokeUser(From_user in varchar2, To_user in varchar2) isretval number;scursor int;v_tablename VARCHAR2(60);sqlstr varchar2(200);cursor c_tablename is select table_name from dba_tables where owner=From_user; BEGINfor v_tablename in c_tablenameloopsqlstr := 'revoke select,delete,update,insert on '||From_user||'.'||v_tablename.table_name || ' from '||To_user;scursor := dbms_sql.open_cursor;dbms_sql.parse(scursor,sqlstr, dbms_sql.native);retval := dbms_sql.execute(scursor);dbms_sql.close_cursor(scursor);end loop;exceptionWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');WHEN TOO_MANY_ROWS THENDBMS_OUTPUT.PUT_LINE('程序运行错误!请使用游标');WHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('发生其它错误!');END revokeUser;2)执行存储过程(注意,存储过程的名称不能一样,否则会被替换)Execute grantUser / revokeUser;3)如果增加新的表,还需要充分执行同样的操作;。
在PLSQL中创建Oracle数据库Users用户并设置权限
1、首先在PLQL Developer 中打开数据库。
使用"sys" 用户,输入数据库名称,输入该数
据库”sys”用户的密码sysdba,在”Connect as”组合框中选中“SYSDBA”。
单击OK 按钮打开数据库。
2、创建”User”型用户“DXXFLD”。
找到“Users”文件夹,右键弹出菜单中,选中”New”,
弹出用户创建界面:
在其中输入要添加的用户名”DXXFLD”,并作其他设置如下:
户名连接到数据库。
然后通过“Quotas”选项卡设置用户权限:将“Tablespace”中选中“User”, 勾选“Unlimited”复选项(这个一定要选中啊,不然创建表的时候会提示没有表空间的访问权限
的)。
最后单击”Apply”按钮使各项设置起作用。
2、使用新创建的用户创建表。
在”Tables”文件夹上右键单击,选中弹出菜单中“New”选
项
在之后弹出属性页下,做如下设置:
然后再设置字段名等其他属性就和直接用“System”或“Sys”等表空间创建表一样了。
要说明的是使用自定义”Users”创建的表,其在PLSQL 中“Users“->”Tables”目录下才
可见。
oracle授权机制Oracle授权机制是指在Oracle数据库中对用户和角色进行授权和权限管理的机制。
通过授权,可以限制用户对数据库对象的访问和操作,保证数据的安全性和完整性。
在Oracle数据库中,授权是通过使用GRANT和REVOKE语句来实现的。
GRANT语句用于授权,REVOKE语句用于回收权限。
授权可以分为系统级授权和对象级授权两种。
系统级授权是指对用户和角色进行授权,控制其对整个数据库实例的访问权限。
通过GRANT语句可以授予用户和角色系统级权限,如CREATE SESSION、CONNECT、CREATE TABLESPACE等。
系统级权限授权给用户后,用户可以连接到数据库实例并执行相应的操作。
对象级授权是指对数据库对象(如表、视图、存储过程等)进行授权,控制用户对这些对象的访问和操作权限。
通过GRANT语句可以授予用户对特定对象的SELECT、INSERT、UPDATE、DELETE 等权限。
对象级授权可以细粒度地控制用户对数据库对象的操作,提高数据的安全性。
在进行授权时,可以指定授权的粒度和范围。
粒度可以是对象级、行级或列级。
对象级授权是指对整个对象进行授权,行级授权是指对对象中的某些行进行授权,列级授权是指对对象中的某些列进行授权。
范围可以是用户级、角色级或全局级。
用户级授权是指将权限授予特定用户,角色级授权是指将权限授予角色,全局级授权是指将权限授予所有用户。
除了GRANT和REVOKE语句外,Oracle还提供了其他一些相关的语句和视图来管理和查询授权信息。
例如,可以使用ALTER USER语句修改用户的权限,使用GRANT ROLE语句将角色授予用户,使用ROLE_TAB_PRIVS视图查看角色的权限等。
在实际应用中,需要根据业务需求和安全要求来设计和管理授权机制。
合理的授权设计可以保证数据库的安全性和性能。
一般来说,应该遵循以下几个原则:1.最小权限原则:即给用户和角色授予最小必需的权限,避免赋予过多的权限,降低风险。
Oracle新建用户、角色,授权,建表空间oracle数据库的权限系统分为系统权限与对象权限。
系统权限( database systemprivilege )可以让用户执行特定的命令集。
例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。
对象权限( database object privilege )可以让用户能够对各个对象进行某些操作。
例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。
每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。
oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。
用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。
一个用户也可以直接给其他用户授权。
一、创建用户oracle内部有两个建好的用户:system和sys。
用户可直接登录到system用户以创建其他用户,因为system具有创建别的用户的权限。
在安装oracle时,用户或系统管理员首先可以为自己建立一个用户。
例如:Sql代码create user user01 identified by u01;该命令还可以用来设置其他权限,详细情况参见自学资料。
要改变一个口令,可以使用alter user命令:<span style="white-space: pre;"> alter user user01 identified by usr01;</span><span style="white-space: pre;"><span style="white-space: normal;"> </span> </span>现在user01的口令已由“u01”改为“usr01”。
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⾓⾊(role)就是⼀组权限(privilege)(或者是每个⽤户根据其状态和条件所需的访问类型)。
⽤户可以给⾓⾊授予或赋予指定的权限,然后将⾓⾊赋给相应的⽤户。
⼀个⽤户也可以直接给其他⽤户授权。
Oracle 权限设置⼀、权限分类: 系统权限:系统规定⽤户使⽤的权限。
(系统权限是对⽤户⽽⾔)。
实体权限:某种权限⽤户对其它⽤户的表或视图的存取权限。
(是针对表或视图⽽⾔的)。
⼆、系统权限管理: 1、系统权限分类: DBA: 拥有全部特权,是系统最⾼权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的⽤户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的⽤户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通⽤户:授予connect, resource权限。
对于DBA管理⽤户:授予connect,resource, dba权限。
2、系统权限授权命令: [系统权限只能由DBA⽤户授出:sys, system(最开始只能是这两个⽤户)] 授权命令:SQL> grant connect, resource, dba to ⽤户名1 [,⽤户名2]...; [普通⽤户通过授权可以具有与system相同的⽤户权限,但永远不能达到与sys⽤户相同的权限,system⽤户的权限也可以被回收。
] 例: SQL> connect system/manager SQL> Create user user50 identified by user50; SQL> grant connect, resource to user50; 查询⽤户拥有哪⾥权限: SQL> select * from dba_role_privs; SQL> select * from dba_sys_privs; SQL> select * from role_sys_privs; 删除⽤户:SQL> drop user ⽤户名 cascade; //加上cascade则将⽤户连同其创建的东西全部删除3、系统权限传递: 增加WITH ADMIN OPTION选项,则得到的权限可以传递。
oracle中新建⽤户和赋予权限1.新建个⽤户create user xxxxx(⽤户名) identified by "密码"alert user ⽤户名 identified by “新密码” --修改⽤户密码因为新建的⽤户和默认的⽤户是锁住的,没有权限。
所以新建⽤户后要给⽤户赋予权限grant dba to ⽤户名 --给⽤户赋予所有权限,connect是赋予连接数据库的权限,resource 是赋予⽤户只可以创建实体但是没有创建数据结构的权限。
grant create session to ⽤户名 --这个是给⽤户赋予登录的权限。
grant create table to ⽤户名 --给⽤户赋予表操作的权限grant unlimited tablespace to ⽤户名 --给⽤户赋予表空间操作的权限grant select any table to ⽤户名 --给该⽤户赋予访问任务表的权限同理可以赋予update 和delete 的grant select on srapp_hz_zhpt_yl.jggl to srapp_hz_zhpt_ylcs --这⾥是给srapp_hz_zhpt_ylcs⽤户赋予selectsrapp_hz_zhpt_yl⽤户的jggl表的查询的权限。
同理可以有alter,drop,insert等权限。
-----------------------------注意这个语句在没有访问另⼀个⽤户的权限情况下这个语句要在另⼀个⽤户登录情况下执⾏,这样才能⽣效。
-------------撤销权限基本语法同grant,关键字为revoke 如: revoke create tabel to ⽤户名就是取消这个⽤户的对表操作的权限。
-----------查看权限select * from user_sys_privs;//查看当前⽤户所有权限select * from user_tab_privs;//查看所⽤⽤户对表的权限-----------⾓⾊⾓⾊即权限的集合,可以把⼀个⾓⾊授予给⽤户,管理⾓⾊的权限⽐较简单,可以在⼀个⽤户下创建多个⾓⾊,⽤户只需要添加⾓⾊就可以管理权限了,便于⽤户管理权限。
Oracle系统中用户权限的赋予,查看和管理.在Oracle数据库中,用户的权限分为两种(在这里我们不讨论dba或oper的权限,只考虑普通用户的权限),分别是System Privilege系统权限和User Table Privilege用户数据表权限.1.首先,创建用户,以下几条命令可以创建一个用户,前提是必须以DBA的身份登录(如果你不是DBA,不要看下去了):create user DB_USER identified by DB_USER_PW '创建用户DB_USER,密码为DB_USER_PW grant create session to DB_USER '给用户创建会话的权限grant resource to DB_USER2.当用户建立后,会自动在Oracle数据库系统中生成属于该用户的Scheme (可以理解为所有属于该用户的表,视图....等对象的集合).该用户可以将对这些对象的访问权限赋予其它的系统用户.3.该用户用sqlplus登录后,以下命令可以看到该用户的权限(该部分取自于CNOUG网站):本用户读取其他用户对象的权限:select * from user_tab_privs;本用户所拥有的系统权限:select * from user_sys_privs;ORACLE数据库用户与权限管理ORACLE是多用户系统,它允许许多用户共享系统资源。
为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制。
2. 1 ORACLE数据库安全策略建立系统级的安全保证系统级特权是通过授予用户系统级的权利来实现,系统级的权利(系统特权)包括:建立表空间、建立用户、修改用户的权利、删除用户等。
系统特权可授予用户,也可以随时回收。
ORACLE系统特权有80多种。
建立对象级的安全保证对象级特权通过授予用户对数据库中特定的表、视图、序列等进行操作(查询、增、删改)的权利来实现。
我们将从创建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 关键字*/。