oracle用户权限管理分解
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 管理对象权限
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是一种关系型数据库管理系统,它提供了一种灵活且安全的赋权机制,可以控制用户对数据库对象的访问权限。
本文将介绍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 里要给用户分配权限,那可真是一门学问呢!就好像你要给一个小伙伴分配任务一样,得搞清楚该给啥权限,不能多也不能少。
比如说,你想让某个用户能查看一些特定的数据,那就得用合适的语句来给他这个权限。
“GRANT SELECT ON table_name TOuser_name;”,看,这就是一条简单的分配读权限的语句啦。
就好像你给朋友一把钥匙,让他能打开特定的那扇门去看看里面的东西。
但要是想让用户能修改数据呢,那就得用不同的语句啦,“GRANT INSERT, UPDATE ON table_name TO user_name;”。
这就好比你不仅给了朋友钥匙,还告诉他可以在里面动点小手脚,改改东西呢。
哎呀,这可真不是随随便便就能搞对的呀!要是不小心给错了权限,那不就乱套了嘛!就像你本想让朋友帮忙打扫下客厅,结果不小心让他能随便进卧室翻东西了,那可不行呀!而且,分配权限的时候还得考虑周全,不能只看眼前。
比如说,以后这个用户的职责会不会变呀,到时候权限是不是又得重新调整呢。
这就跟你给朋友安排任务一样,一开始可能只让他做一件事,后来发现他还能做更多,或者原来的任务不需要他做了,那权限不就得跟着变嘛。
在 Oracle 中分配用户权限语句真的是非常重要的呀!这可关系到整个数据库的安全和正常运行呢。
要是权限分配得不合理,那可能会带来很多麻烦,甚至会导致数据泄露或者错误。
所以呀,我们可得认真对待,就像对待我们最珍视的宝贝一样,小心翼翼地去设置好每一个权限。
总之,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分配给⽤户.。
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 用户去DBA权限的管理
为了规范数据库用户的操作,特制订如下规范:一、每个系统建立自己的数据库文件和索引文件,每个文件不允许超过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数据库User用户并设置权限
在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基础和用户管理
sql>select * from emp where job='&job'
2、edit
说明:该命令可以编辑指定的sql脚本
3、spool
说明:该命令可以将sql*plus屏幕上的内容输出到指定的文件中去
显示和设置环境变量
才可以建表;
希望xiaoming用户可以去查询scott用户的emp表 在scoFra bibliotekt用户可以授权
grant select on emp to xiaoming;
select * from scott.emp;
希望xiaoming用户可以去修改scott用户的emp表
grant update on emp to xiaoming;
?如果scott把xiaoming 对emp表的查询权限回收了,那么xiaohong会怎么样?
xiaohong的权限也被回收了
使用profile管理用户口令
账户锁定:
指定该用户登录时最多可以输入密码的次数,也可以指定用户锁定的时间一般用dba的身份去执行该命令
例子:指定xiaoming这个用户最多只能尝试3次登录,锁定时间为两天,实现:
连接命令:
conn :切换用户
例:conn system/manager
dist:断开链接
passw:修改用户的密码 如果要修改其他用户的密码,则需要sys/system用户登录
show user:显示当前用户名
exit:断开数据库的连接并退出
文件操作命令:
1、start和@ :运行sql脚本
oracle授权机制
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用户及权限管理
25
2014年5月28日星期三
Oracle数据库管理
Oracle 数据库管理
课堂训练-3
1、设置用户密码失效 2、并测试是否修改成功
26
2014年5月28日星期三
Oracle数据库管理
Oracle 数据库管理
锁定和解除用户锁定
如果要禁止某个用户访问Oracle 系统,那么最好的方式是锁定该用户,而不 是删除该用户。锁定用户并不影响该用户所拥有的对象和权限,这些对象和权限依 然存在,只是暂时不能以该用户的身份访问系统。当锁定解除后,该用户可以正常 地访问系统、按照自己原有的权限访问各种对象。
Oracle 数据库管理
本讲目标
能初步掌握用户的管理 能初步掌握用户权限的管理 能初步掌握角色的管理
3
2014年5月28日星期三
Oracle数据库管理
Oracle 数据库管理
1、用户与模式的关系
用户:Oracle用户是用于连接数据库和访问数据库对象的。 模式(方案):是用户所拥有的数据库对象的集合,模式对象是数 据库数据的逻辑结构
其中
在创建用户时,创建者必须具有create user系统权限。
user_name指定将要创建的新数据库用户名称。 Password指定该新数据库用户的密码。 def_tablespace指定存储该用户所创建对象的默认表空间。 temp_tablespace指定存储临时对象的默认表空间。
18
15
2014年5月28日星期三
Oracle数据库管理
Oracle 数据库管理
oracle的normal 、 sysdba 、 sysoper 有什么区别 ?
注意:system 如果正常登录,它其实就是一个普通的 dba 用户,但是 如果以 as sysdba 登录,其结果实际上它是作为 sys 用户登录的。其 他用户也是一样,如果 as sysdba 登录,也是作为 sys 用户登录的。
Oracle新建用户、角色,授权,建表空间
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权限有一定的规则和限制,本文将对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⽤户都有⼀个名字和⼝令,并拥有⼀些由其创建的表、视图和其他资源。
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中新建用户和赋予权限
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数据库的用户和权限管理
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用户权限分配控制有个深入的了解。
一、创建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 关键字*/。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 11G数据库应用开发
概要文件(续)
CONNECT_TIME :指定一个会话连接到数据库 的最大时间 IDLE_TIME DEFAULT:指定一个会话可以连续空 闲的最长时间,单位:分钟 COMPOSITE_LIMIT:设置用户对系统资源的综 合消耗。由: CPU_PER_SESSION、 LOGICAL_READS_PER_SESSION、 PRIVATE_SGA、CONNECT_TIME综合决定
Oracle 11G数据库应用开发
第四讲用户权限管理 用户管理
权限管理
角色管理
概要文件
Oracle 11G数据库应用开发
用户
定义:也叫方案,是一组逻辑对象的所有者。
验证方式:数据库验证和操作系统验证 表空间和临时表空间:表空间为用户创建数据 对象的存储表空间;临时表空间用于创建临时 段。
Revoke r_teach from r_stu
删除角色 drop role r_teach
Oracle 11G数据库应用开发
角色(续)
数据库预定义角色:
Connect (登录执行基本函数)、 Resource(建立用户自己的数据对象)、 DBA(所有系统权限,包括无限的空间限额、给 其他用户授予全部权限的能力)
2、新建一个用于网上购物系统管理的用户 shoppingdba,其中默认表空间为tpshopping, 角色为DBA
Oracle 11G数据库应用开发
创建用户
语法: (简单方式) create user mary --用户名 identified by abc ;--密码 说明:以上为创建用户的必须语句 默认表空间均为users
连接数
临时表空间
概要文件 在表空间上的使用配额
Oracle 11G数据库应用开发
Oracle 11G数据库应用开发
概要文件(续)
控制资源参数: SESSIONS_PER_USER : 限制用户当前会话的数量 CPU_PER_SESSION: 限制一个会话使用的CPU时间 CPU_PER_CALL :限制一个SQL语句使用的CPU时间 LOGICAL_READS_PER_SESSION:限制每个会话读取的数 据库数据块数,包括从内存和磁盘读取的总和 LOGICAL_READS_PER_CALL:限制SQL语句读取的数据库 数据块数,包括从内存和磁盘读取的总和 PRIVATE_SGA :SGA中私有区域的大小
Oracle 11G数据库应用开发
删除用户
删除用户: Drop user annie; 删除拥有对象的用户: Drop user annie cascade; 注意:如果要删除的用户正在连接数据库,不 能将其删除
Oracle 11G数据库应用开发
查询用户
视图DBA_Users 查看所有用户名、用户ID、用户创建日期 视图all_Users
Oracle 11G数据库应用开发
权限查询
视图USER_SYS_Privs:系统权限 视图USER_TAB_Privs:对象权限
Oracle 11G数据库应用开发
角色
定义:角色是一系列权限的集合
功能:简化权限管理
创建角色: Create role r_teach 为角色授权: grant select on class to r_ teach
空间分配:表空间中,必须要为一个用户指派 空间配额,用于存储数据库对象。
Oracle 11G数据库应用开发
用户、角色、权限关系
用户
A
B
C
角色
HR_MGR
HR_CLERK
权限 SELECT ON JOBS CREATE TABLE CREATE SESSION INSERT ON JOBS UPDATE ON JOBS
Oracle 11G数据库应用开发
权限回收(续)
注意:
–
–
–
–
一个用户被多用户授予权限后,其中一个用户收回权限, 不影响其他用户授予的权限 收回With grant option 或 With admin option,要首先回收 相应的权限,再重新授予该权限而不再授予With grant option 或 With admin option 传递权限With admin option给其他用后,如果此系统权 限被回收,其他用户仍然拥有该系统权限 传递权限With grant option给其他用后,如果此对象权限 被回收,其他用户该对象权限也被收回
–
– –
–
连接到数据库需要create session权限 删除其他用户的Table需要drop any table权限 Select、insert、update、delete是对象权限,而 Select any、insert any、update any、delete any是 系统权限 使用 With admin option 进行系统权限传递
Oracle 11G数据库应用开发
角色(续)
删除角色 Drop Role r_teach
Oracle 11G数据库应用开发
概要文件(续)
功能: 控制用户对系统和数据库资源的使用,保证系 统正常运行,防止用户消耗大量资源造成的系 统性能下降。 方法: 设置预定义资源参数。 这些参数包含在概要文件中,如果没有为用户 指定概要文件,则使用Default概要文件
– grant select on class to – grant teach to
teach;
annie;
Oracle 11G数据库应用开发
权限(续)
权限分类:系统权限和对象权限
–
对象权限(objects Privilege) : 赋予在某一具体数据对象的 操作能力 1) 9种对象权限: Select 、Update、Delete、Insert、Execute、Index、 reference、Alter、Read 2) 对象权限传递 权限: With Grant Option 被授予With Grant Option对象权限的用户,可将该对象权 限授予其他用户
视图User_Users 查看当前用户信息
Oracle 11G数据库应用开发
权限
定义:控制用户在数据库中所能进行的操作 授予权限的方法: 1)直接授予用户:
grant create session to annie;
2)先将权限授予角色,再将角色授予用户:
–
Create role teach;
Oracle 11G数据库应用开发
权限(续)
3) 谁有权授予对象权限给其他人?
对象的所有者 DBA 被授予With grant option的用户
4) 权限可以授予给谁? 其它用户 角色 Public
Oracle 11G数据库应用开发
系统权限
系统权限(system Privilege):允许执行一组特定 的命令 几点补充:
回收角色权限
revoke select on class from r_ teach 将角色授予用户 Grant r_ teach to annie
Oracle 11G数据库应用开发
角色(续)
从用户回收角色
Revoke annie from r_teach 将角色授予角色 Grant r_teach to r_stu [with admin option] 从角色回收角色
Oracle 11G数据库应用开发
概要文件(续)
创建概要文件
CREATE PROFILE "TEMPPROFILE" LIMIT CPU_PER_SESSION 1000 CPU_PER_CALL 1000 CONNECT_TIME 30 IDLE_TIME DEFAULT SESSIONS_PER_USER 10 LOGICAL_READS_PER_SESSION 1000 LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 16K COMPOSITE_LIMIT 1000000 FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 5 PASSWORD_GRACE_TIME 60 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_MAX DEFAULT
Role r_Stu
4) Alter User Annie Default Role None
Oracle 11G数据库应用开发
角色(续)
查询角色信息
– –
–
–
视图DBA_Roles: 角色信息 视图Role_role_privs:角色与传递权限 信息 视图Role_SYS_privs:角色系统权限 视图Role_tab_privs:角色对象权限
创建用户
Oracle 11G数据库应用开发 密码认证 OS 认证
默认表空间
临时表空间
在表空间上的使用配额 概要文件
是否密码过期
是否锁上用户
Oracle 11G数据库应用开发
准备好网上购物系统的表空间和用户
1、新建一个网上购物系统的表空间tpshopping: 数据文件初始10M大小,增发
系统权限(续)
例子: grant select any to annie;
grant select any to annie with admin option;
Oracle 11G数据库应用开发
权限回收
授予的对象权限和系统权限可以通过Revoke语 句收回 例子: revoke select any from annie;--回收系统权限 revoke select on class from annie; --回收对象权限