oracle 查看用户、权限、角色
- 格式:doc
- 大小:29.00 KB
- 文档页数:2
oracle数据库⽤户之间授权 今天遇到⼀个数据库的问题: 系统数据库⽤户下创建了⼏个视图⽤于外部系统开发报表使⽤,当外部系统提取视图数据时,需要通过⼀个只能访问需要视图权限的⽤户,于是想到给他创建⼀个新的⽤户,并给这个⽤户分配只能访问这⼏个视图的权限。
1. 使⽤ oracle sql developer 客户端登陆数据库。
2. 查看当前数据库⽤户拥有的⾓⾊: select * from USER_ROLE_PRIVS; 查看⽤户系统权限:select * from dba_sys_privs; 查看⽤户系统权限:select * from user_sys_privs; 3、因为系统数据库⽤户拥有dba权限,所以,使⽤数据库系统⽤户创建⽤户: create user BI identified by 123; 4、给BI⽤户授权连接权限: grant connect to BI; 5、给BI⽤户授权 grant RESOURCE to BI; 6、给BI⽤户授权select 某视图的权限: 7、使⽤BI⽤户连接数据库: 查询视图发现提⽰表或视图不存在:SELECT * FROM VW_MONTHLY_BUDGET_ANALYSI; 在视图前加上视图所有者⽤户名称则可以查询成功。
eg:SELECT * FROM FSSC.VW_MONTHLY_BUDGET_ANALYSI; 7、给BI⽤户授权同义词权限: 8、使⽤BI⽤户连接数据库: 此时查询发现还是不可以 9、在BI⽤户下创建同义词视图: 10、BI⽤户下直接查询视图名称则可以查询 11、但是登陆BI⽤户,则在视图列表⾥看不到任何视图,如何能够查询并且登陆⽤户也能看到该视图? 。
常⽤查询Oracle的表,视图,存储过程,⽤户等SQL命令有时候需要导出某⽤户下的所有table、view、sequence、trigger等信息,下⾯的SQL可以将这些信息select出来:select * from user_tables;select * from user_views;select * from user_sequences;select * from user_triggers;查看当前⽤户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 查看⽤户下所有的表 SQL>select * from user_tables;1、⽤户 查看当前⽤户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 显⽰当前会话所具有的权限 SQL>select * from session_privs; 显⽰指定⽤户所具有的系统权限 SQL>select * from dba_sys_privs where grantee=’GAME’;2、表 查看⽤户下所有的表 SQL>select * from user_tables; 查看名称包含log字符的表 SQL>select object_name,object_id from user_objects where instr(object_name,’LOG’)>0; 查看某表的创建时间 SQL>select object_name,created from user_objects where object_name=upper(‘&table_name’); 查看某表的⼤⼩ SQL>select sum(bytes)/(1024*1024) as “size(M)” from user_segments where segment_name=upper(‘&table_name’); 查看放在ORACLE的内存区⾥的表 SQL>select table_name,cache from user_tables where instr(cache,’Y')>0;3、索引 查看索引个数和类别 SQL>select index_name,index_type,table_name from user_indexes order by table_name; 查看索引被索引的字段 SQL>select * from user_ind_columns where index_name=upper(‘&index_name’); 查看索引的⼤⼩ SQL>select sum(bytes)/(1024*1024) as “size(M)” from user_segments where segment_name=upper(‘&index_name’);4、序列号 查看序列号,last_number是当前值 SQL>select * from user_sequences;5、视图 查看视图的名称 SQL>select view_name from user_views; 查看创建视图的select语句 SQL>set view_name,text_length from user_views; SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的⼤⼩ SQL>select text from user_views where view_name=upper(‘&view_name’);6、同义词 查看同义词的名称 SQL>select * from user_synonyms;7、约束条件 查看某表的约束条件 SQL>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper(‘&table_name’); SQL>select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper(‘&table_owner’) and c.table_name = upper(‘&table_name’) and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position;8、存储函数和过程 查看函数和过程的状态 SQL>select object_name,status from user_objects where object_type=’FUNCTION’; SQL>select object_name,status from user_objects where object_type=’PROCEDURE’; 查看函数和过程的源代码 SQL>select text from all_source where owner=user and name=upper(‘&plsql_name’);。
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中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' );。
ORACEL ⽤户⾓⾊权限⼀.权限是⽤户对⼀项功能的执⾏权⼒。
在Oracle中,根据系统管理⽅式不同,将权限分为系统权限和实体权限两类。
系统权限是指是否被授权⽤户可以连接到数据库上,在数据库中可以进⾏哪些系统操作。
⽽实体权限是指⽤户对具体的模式实体(schema)所拥有的权限。
select any table是系统权限,它表⽰可以查看任何表。
⽽select on table1是实体权限,表⽰对表table1的查询权限。
⼆.系统权限授权命令的使⽤语法:grant 权限名 to ⽤户|⾓⾊|public(public表⽰将权限赋给数据库中所有的⽤户)例:grant create table to user1 赋给⽤户user1权限create tabel的授权命令授权语句还可以增加with admin option选项,表⽰被授权的⽤户可以将它所得权限赋给其他⽤户例:grant create table to user1,user2 with admin option若要了解各⽤户所拥有的系统权限,可以查询数据字典User_sys_privs、Role_sys_privs若要回收权限,则使⽤revoke命令revoke create table from user1三.实体权限管理实体权限是指某⼀⽤户对某⼀特定schema对象的操作权限。
1.实体权限分类不同的实体类型有不同的实体权限,如下表表视图序列进程快照Alter y yDelete y y yExecute yIndex yInsert y yReferences ySelect y y y yUpdate y y y y2.实体权限的授权命令语法:grant 实体权限名|All to ⽤户|⾓⾊|public 其中,All表⽰实体的所有实体权限如:grant select on books to user1若要了解表的实体权限授权信息,则可以查询select * from user_tab_privs若要收回实体权限,则使⽤revokerevoke 实体权限名|All on 实体名 from ⽤户名|⾓⾊名|public*******1.系统权限和对象权限都通过grant语句授予⽤户或⾓⾊。
查询oracle中所有⽤户信息(转)----查询oracle中所有⽤户信息----1、查询数据库中的表空间名称----1)查询所有表空间select tablespace_name from dba_tablespaces;select tablespace_name from user_tablespaces;----2)查询使⽤过的表空间select distinct tablespace_name from dba_all_tables;select distinct tablespace_name from user_all_tables;----2、查询表空间中所有表的名称select * from dba_all_tables where tablespace_name = 'SYNC_PLUS_1' and owner='GDSDCZJ'----3、查询系统⽤户select * from all_usersselect * from dba_users----4、查看当前连接⽤户select * from v$session----5、查看当前⽤户权限select * from session_privs----6、查看所有的函数和存储过程select * from user_source----其中TYPE包括:PROCEDURE、FUNCTION----7、查看表空间使⽤情况select sum(Bytes_size) from (select a.file_id "FileNo",a.tablespace_name "表空间",a.bytes/1024/1021/1024 Bytes_size,a.bytes - sum(nvl(b.bytes, 0)) "已⽤",sum(nvl(b.bytes, 0)) "空闲",sum(nvl(b.bytes, 0)) / a.bytes * 100 "空闲百分率"from dba_data_files a, dba_free_space bwhere a.file_id = b.file_id(+)group by a.tablespace_name, a.file_id, a.bytesorder by a.tablespace_name);---------------------------------------------------------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.查看⾓⾊(只能查看登陆⽤户拥有的⾓⾊)所包含的权限sql>select * from role_sys_privs;----4.查看⽤户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;----5.查看所有⾓⾊:select * from dba_roles;----6.查看⽤户或⾓⾊所拥有的⾓⾊:select * from dba_role_privs;select * from user_role_privs;----7.查看哪些⽤户有sysdba或sysoper系统权限(查询时需要相应权限)select * from V$PWFILE_USERS----8.SqlPlus中查看⼀个⽤户所拥有权限SQL>select * from dba_sys_privs where grantee='username';其中的username即⽤户名要⼤写才⾏。
Oracle创建⽤户并给⽤户授权查询指定表或视图的权限MSV31账户登录数据库进⾏如下操作:CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUNDDEFAULT TABLESPACE "TBS_DNINMSV31"TEMPORARY TABLESPACE "TEMP2"QUOTA UNLIMITED ON "TBS_DNINMSV31";GRANT "CONNECT" TO NORTHBOUND;ALTER USER NORTHBOUND DEFAULT ROLE NONE;GRANT CREATE SESSION TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNDEVICE" TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNSUBNE" TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNPACKAGE" TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNPORT" TO NORTHBOUND;【注】:在⽤NORTHBOUND登录后查询的时候要在视图前加上DNINMSV31,否则会报表或视图不存在。
例如:select * from DNINMSV31.V_DNDEVICE; --可以正常执⾏select * from DNINMSV31.TB_DEVICE where rownum<5; --执⾏的时候会报表或视图不存在--------------------------------------------------------------------------------------------------GRANT debug any procedure, debug connect session TO hnckb;grant select on sys.dba_pending_transactions to hnckb;grant CREATE VIEW,CREATE JOB,CREATE SYNONYM to hnckb;grant CONNECT,RESOURCE to hnckb;1.标准⾓⾊CONNECTRESOURCE2.系统权限CREATE VIEWCREATE DATABASE LINKCREATE JOBCREATE SYNONYMUNLIMITED TABLESPACE更改定额命令:ALTER USER 名称 QUOTA 0 ON 表空间名ALTER USER 名字 QUOTA (数值)K|M|UNLIMITED ON 表空间名;使⽤⽅法:A、控制⽤户数据增长B、当⽤户拥有⼀定的数据,⽽管理员不想让他在增加新的数据的时候。
oracle 创建create user 及授权grant 查看登陆的用户:以下都可以:show user;select sys_context('userenv','session_user') from dual;select user from dual;查看所有登录的用户必须为DBA 用户:select username from v$session;sys、system等DBA 用户查看其他用户(test)中的对象(表):SQL> select * from test.student;创建一个普通用户都把该用户用起来的流程:1、创建用户SQL>create user test indentified by test;这样就创建了一个用户名密码都为test的用户但这个时候test还是不能登陆成功的,我们需要赋予相应的权限2、赋予create session的权限SQL>grant create session to test;这样test用户就能成功登陆进去但是此时用户还是不能创建表我们需要赋予用户创建表的权限:SQL>grant create table to test;但是用户此时还不能创建表因为需要有使用表空间的权限(相当于用户有了进房间的钥匙但是没有进大门的钥匙。
)所以也应该赋予相应的权限SQL>grant unlimited tablespace to test;这个时候用户就拥有了创建表的权限由于表是用户test的相应的他就拥有了对创建的表的增删查改的权限了3、查看用户拥有什么权限可以通过查询一个系统的视图(数字字典)SQL>select * from user_sys_privs;这样就可以知道当前用户的权限4、撤销权限SQL> revoke create table from test;-----------------------------一些常用视图的区分dba_tables dba_all_tables user_tables user_all_tables all_tables all_all_tables当前用户所属的所有表(注意大写)SQL> select tablespace_name,table_name from user_all_tables where table_name='STUDENT'; SQL> select table_name,tablespace_name from user_tables where table_name='STUDENT'; TABLE_NAME TABLESPACE_NAME------------------------------ ------------------------------STUDENT USERSsys 要查看dba_all_tables,ALL_ALL_TABLES才能查看到test 用户的表。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系oracle权限和同义词笔记2012/09/25 4671 1.查看当前用户所拥有的系统权限 select * from session_privs; 2.查看数据库内的所有角色select * from dba_roles; 4.查看当前用户所拥有的角色select * from session_roles; 5.查看角色的嵌套关系和所授予的用户select * from dba_role_privs order by 1; 6.其他查看角色和权限的命令select * from role_sys_privs; select * from dba_sys_privs; 7.表级对象权限select * from user_tab_privs_made; select * from user_tab_privs_recd; 8.列上的对象权限select * from user_col_privs_made; select * from user_col_privs_recd; 9.比较connect和resoucr角色的权限差别select grantee,privilege from dba_sys_privs where grantee=‘RESOURCE’ OR GRANTEE LIKE ‘CONNECT’ 10.查看oracle的版本select version from v$instance; select * from role_role_privs where role=‘CONNECT’ CONNECT角色在10g以后就只有create session的权限了,以前其他版本的权限都被取消了。
当RESOURCE角色被授予一个用户后,该用户自动拥有了unlimited tablespace的系统权限。
select * from role_role_privs select * from role_sys_privs; select * from role_tab_privs; select * from role_wm_privs; 查看某个role赋给了哪些user或role:select * from DBA_ROLE_PRIVS where GRANTee=‘ifm30’; select * from dba_users; grant RESOURCE to TYF with admin option commit 创建同义词:create public synonym table_name for user.table_name;2.删除同义词:drop public synonym table_name;3.查看所有同义词:select * from dba_synonyms Oracle同义词的作用1) 多用户协同开发中,可以屏蔽对象的名字及其持有者。
Oracle内置角色connect与resource的权限.txt懂得放手的人找到轻松,懂得遗忘的人找到自由,懂得关怀的人找到幸福!女人的聪明在于能欣赏男人的聪明。
生活是灯,工作是油,若要灯亮,就要加油!相爱时,飞到天边都觉得踏实,因为有你的牵挂;分手后,坐在家里都觉得失重,因为没有了方向。
Oracle内置角色connect与resource的权限首先用一个命令赋予user用户connect角色和resource角色:grant connect,resource to user;运行成功后用户包括的权限: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里可以查到(注意这里必须以DBA角色登录):select grantee,privilege from dba_sys_privswhere grantee='RESOURCE' order by privilege;GRANTEE PRIVILEGE------------ ----------------------RESOURCE CREATE CLUSTERRESOURCE CREATE INDEXTYPERESOURCE CREATE OPERATORRESOURCE CREATE PROCEDURERESOURCE CREATE SEQUENCERESOURCE CREATE TABLERESOURCE CREATE TRIGGERRESOURCE CREATE TYPE=================================================一、何为角色?我在前面的篇幅中说明权限和用户。
Oracle查看当前⽤户所在的表空间1、⽤户查看当前⽤户的缺省表空间select username,default_tablespace from user_users;1查看当前⽤户的⾓⾊select * from user_role_privs;1查看当前⽤户的系统权限和表级权限select * from user_sys_privs;select * from user_tab_privs;123显⽰当前会话所具有的权限select * from session_privs;1显⽰指定⽤户所具有的系统权限select * from dba_sys_privs where grantee='GAME';12、表查看⽤户下所有的表select * from user_tables;1查看名称包含log字符的表select object_name,object_id from user_objects where instr(object_name,'LOG')>0;1查看某表的创建时间select object_name,created from user_objects where object_name=upper('table_name');1查看某表的⼤⼩select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('table_name');1查看放在ORACLE的内存区⾥的表select table_name,cache from user_tables where instr(cache,'Y')>0;13、索引查看索引个数和类别select index_name,index_type,table_name from user_indexes order by table_name;1查看索引被索引的字段select * from user_ind_columns where index_name=upper('index_name');1查看索引的⼤⼩select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('index_name');14、序列号查看序列号,last_number是当前值select * from user_sequences;15、视图查看视图的名称select view_name from user_views;1查看创建视图的select语句set view_name,text_length from user_views;set long 2000; 说明:可以根据视图的text_length值设定set long 的⼤⼩select text from user_views where view_name=upper('&view_name');123456、同义词查看同义词的名称select * from user_synonyms;17、约束条件查看某表的约束条件select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name');select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name 1238、存储函数和过程查看函数和过程的状态select object_name,status from user_objects where object_type='FUNCTION';select object_name,status from user_objects where object_type='PROCEDURE';123查看函数和过程的源代码select text from all_source where owner=user and name=upper('&plsql_name');。
Oracle创建设置查询权限⽤户的⽅法⽤户创建:今天要创建⼀个Oracle⽤户,然后发现sql不太记得了,然后只能再去找找资料,发现这样效率并不是很⾼,所以记录成博客,有需要就直接从博客复制。
下⾯是我简单整理的,有需要可以参考。
–创建表空间CREATE TABLESPACE WORKFLOW01 LOGGING DATAFILE ‘D:\oracle\admin\oa\WORKFLOW01.dbf'SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL;–创建临时表空间create temporary tablespace TEMP11 tempfile ‘D:\oracle\admin\oa\TEMP11.dbf'size 100m autoextend on next 32m maxsize 500m extent management local;–创建⽤户CREATE USER t_base IDENTIFIED BY t_base DEFAULT TABLESPACE WORKFLOW01 TEMPORARY TABLESPACE TEMP11;–⽤户授权grant connect,resource,dba to t_base;grant create session to t_base;–删除表空间drop tablespace WORKFLOW01 including contents and datafiles cascade constraints ;–删除⽤户信息drop user t_base cascade;Oracle授权表权限给⽤户:语法:grant [权限名(select|insert |update|delete|all)] on [表名] to [⽤户名]例⼦:给user1授权查询table1的权限:grant select on table1 to user1;不过上⾯的有点⿇烦,假如表很多的话,或许可以⽤游标试验,如果对⽤户表权限不是很严格的,可以授权⽤户查询所有⽤户的表权限:grant select any table to gd_user with admin option;不过查询时候,还是要加上⽤户名才能查询,例如:select * from user.table1上⾯是⽤sql分配权限的办法,也可以通过⾓⾊来授权,先给⾓⾊权限,然后再给⽤户分配⾓⾊Oracle主要系统⾓⾊:DBA: 拥有全部特权,是系统最⾼权限,只有DBA才可以创建数据库结构。
一、概述在现代信息技术领域,数据库扮演着至关重要的角色。
而Oracle数据库作为全球最为著名的关系型数据库管理系统之一,在企业级应用系统中被广泛使用。
而在管理Oracle数据库时,数据库授权是一项十分重要的工作。
本文将从Oracle数据库的授权规则出发,系统地介绍Oracle数据库授权的相关内容。
二、Oracle数据库授权的基本概念1. Oracle数据库授权的定义在数据库管理中,授权是指授权用户或角色访问数据库中对象的操作的过程。
授权规则则是指相应的授权原则和规定。
Oracle数据库授权即是指允许用户或角色对数据库对象进行访问和操作的权限规定。
2. Oracle数据库授权的类型Oracle数据库授权可以分为系统级授权和对象级授权两种类型。
系统级授权是对数据库中所有对象的权限进行授权,而对象级授权是对具体某个对象(如表、视图等)的权限进行授权。
三、Oracle数据库授权规则的具体内容1. 系统级授权规则(1)系统管理员权限授权:在Oracle数据库中,系统管理员(通常是sys用户)具有最高的权限,可以对所有对象进行操作。
在授权时,应谨慎授予系统管理员权限,以免造成数据库安全风险。
(2)特定角色授权:在Oracle数据库中,有一些特定的角色(如DBA角色、CONNECT角色等)拥有特定的权限。
在授权时,需要根据具体需求,合理授予相应的角色。
2. 对象级授权规则(1)表级权限授权:在Oracle数据库中,对表的权限授权是非常常见的操作。
授权对象可以是用户或者角色,授权的操作可以包括SELECT、INSERT、UPDATE、DELETE等。
(2)视图级权限授权:对视图的权限授权也同样重要,可以控制用户或角色对视图的查询权限。
(3)存储过程权限授权:对存储过程的权限授权可以控制哪些用户或角色可以执行特定的存储过程。
3. 其他规则(1)跨数据库授权:在复杂的系统环境中,可能存在跨多个Oracle数据库的授权问题。
Oracle创建⽤户并给⽤户授权查询指定表或视图的权限⽤DNINMSV31账户登录数据库进⾏如下操作:CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUNDDEFAULT TABLESPACE "TBS_DNINMSV31"TEMPORARY TABLESPACE "TEMP2"QUOTA UNLIMITED ON "TBS_DNINMSV31";GRANT "CONNECT" TO NORTHBOUND;ALTER USER NORTHBOUND DEFAULT ROLE NONE;GRANT CREATE SESSION TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNDEVICE" TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNSUBNE" TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNPACKAGE" TO NORTHBOUND;GRANT SELECT ON "DNINMSV31"."V_DNPORT" TO NORTHBOUND;【注】:在⽤NORTHBOUND登录后查询的时候要在视图前加上DNINMSV31,否则会报表或视图不存在。
例如:select*from DNINMSV31.V_DNDEVICE; --可以正常执⾏select*from DNINMSV31.TB_DEVICE where rownum<5; --执⾏的时候会报表或视图不存在创建同义词供对⽅公司系统访问:CREATE SYNONYM V_DNDEVICE FOR DNINMSV31.V_DNDEVICE;CREATE SYNONYM V_DNSUBNE FOR DNINMSV31.V_DNSUBNE;CREATE SYNONYM V_DNPACKAGE FOR DNINMSV31.V_DNPACKAGE;CREATE SYNONYM V_DNPORT FOR DNINMSV31.V_DNPORT;第三⽅的系统直接通过这个同义词就可以访问到⽤户DNINMSV31中的视图。
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用户权限分配控制有个深入的了解。
一、创建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 关键字*/。
oracle创建⽤户、授权及⾓⾊管理oracle⽤户的概念对于Oracle数据库⾄关重要,在现实环境当中⼀个服务器⼀般只会安装⼀个Oracle实例,⼀个Oracle ⽤户代表着⼀个⽤户群,他们通过该⽤户登录数据库,进⾏数据库对象的创建、查询等开发。
每⼀个⽤户对应着该⽤户下的N多对象,因此,在实际项⽬开发过程中,不同的项⽬组使⽤不同的Oracle⽤户进⾏开发,不相互⼲扰。
也可以理解为⼀个Oracle⽤户既是⼀个业务模块,这些⽤户群构成⼀个完整的业务系统,不同模块间的关联可以通过Oracle⽤户的权限来控制,来获取其它业务模块的数据和操作其它业务模块的某些对象。
⼀、创建⽤户CREATE USER TEST1--⽤户名IDENTIFIED BY "test1"--密码ACCOUNT UNLOCK; -- 账户是否解锁(LOCK:锁定、UNLOCK解锁)sys;//系统管理员,拥有最⾼权限system;//本地管理员,次⾼权限scott;//普通⽤户,密码默认为tiger,默认未解锁sys;//系统管理员,拥有最⾼权限system;//本地管理员,次⾼权限scott;//普通⽤户,密码默认为tiger,默认未解锁⼆、登陆sqlplus / as sysdba;//登陆sys帐户sqlplus sys as sysdba;//同上sqlplus scott/tiger;//登陆普通⽤户scottsqlplus / as sysdba;//登陆sys帐户sqlplus sys as sysdba;//同上sqlplus scott/tiger;//登陆普通⽤户scott三、管理⽤户create user zhangsan;//在管理员帐户下,创建⽤户zhangsanalert user scott identified by tiger;//修改密码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)/*管理员授权*/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和update grant alert all table to zhangsan;//授予zhangsan⽤户alert任意表的权限/*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和update grant alert all table to zhangsan;//授予zhangsan⽤户alert任意表的权限五、撤销权限基本语法同grant,关键字为revoke基本语法同grant,关键字为revoke六、查看权限select * from user_sys_privs;//查看当前⽤户所有权限select * from user_tab_privs;//查看所⽤⽤户对表的权限select * from user_sys_privs;//查看当前⽤户所有权限select * from user_tab_privs;//查看所⽤⽤户对表的权限七、操作表的⽤户的表/*需要在表名前加上⽤户名,如下*/select * from zhangsan.tablename/*需要在表名前加上⽤户名,如下*/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类似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的权限授予myrolegrant myrole to zhangsan;//授予zhangsan⽤户myrole的⾓⾊drop role myrole;删除⾓⾊/*但是有些权限是不能授予给⾓⾊的,⽐如unlimited tablespace和any关键字*/转载:;。
查看用户、权限、角色的命令和视图
a
1.查看所有用户:
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_PRIVILEGES
ALL_TAB_PRIVS
ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限
oracle与用户角色权限相关的视图
Oracle 本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图.
一. 概述
与权限,角色相关的视图大概有下面这些:
1、DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限。
2、USER_SYS_PRIVS: 查询当前用户所拥有的系统权限。
3、SESSION_PRIVS: 查询当前用户所拥有的全部权限。
4、ROLE_SYS_PRIVS: 查询某个角色所拥有的系统权限。
注意: 要以SYS用户登陆查询这个视图,否则返回空。
5、ROLE_ROLE_PRIVS: 当前角色被赋予的角色
6、SESSION_ROLES: 当前用户被激活的角色
7、USER_ROLE_PRIVS: 当前用户被授予的角色
针对表的访问权限的视图:
TABLE_PRIVILEGES
ALL_TAB_PRIVS
ROLE_TAB_PRIVS:某个角色被赋予的相关表的权限。