Oracle创建用户并给用户授权查询指定表或视图的权限

您所在的位置:网站首页 oracle试图授权 Oracle创建用户并给用户授权查询指定表或视图的权限

Oracle创建用户并给用户授权查询指定表或视图的权限

2024-01-31 11:01| 来源: 网络整理| 查看: 265

用DNINMSV31账户登录数据库进行如下操作:

CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAULT 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 START_TIME and sysdate sysdate-90 and b.cat_id=4; create or replace view INVEST_CLOCK_VIEWS as select * from qlzqclient.INVEST_CLOCK; create or replace view INVEST_LOG_VIEWS as select * from qlzqclient.INVEST_LOG;

 

 

第四步,在数据库用户A 中,将视图查询权限授予给用户B

因为在步骤二中,加了with grant option ,所以这里视图查询权限可以成功授予。

grant select on INVEST_CLOCK_views to ryd_interface; grant select on INVEST_LOG_views to ryd_interface; grant select on run_views to ryd_interface;

 

 

第五步,在数据库用户B 中,检查视图能否查询得到,再创建同义词。

conn ryd_interface/ryd_interface select count(*) from ryd_interface_src.run_views; select count(*) from ryd_interface_src.INVEST_CLOCK_views; select count(*) from ryd_interface_src.INVEST_LOG_views; create synonym run_views for ryd_interface_src.run_views; create synonym INVEST_CLOCK_views for ryd_interface_src.INVEST_CLOCK_views; create synonym INVEST_log_views for ryd_interface_src.INVEST_log_views;

 

第三方的系统直接通过这个同义词就可以访问到用户A 中的视图。这也是对系统安全的一种保护措施。第三方系统登录后,只能看到其同义词,其他的都不会访问得到。

 

第六步,限制资源使用

因为用户B 是给第三方系统使用,我们无法控制第三方应用的质量,为了防止在应用出现异常连接时数据库会话数暴涨导致数据库整体服务出现故障,所以我们对该用户的数据库会

话数做一个限制。

这里采用profile 的sessions_per_user 功能,实现单个用户会话数的限制。

conn / as sysdba

alter system set resource_limite=true scope=both sid='*';

新建profile, 初始限制为1 ,用于测试。

create profile third_user limit SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS unlimited;

alter user ryd_interface profile third_user;

将会话数调整到30

alter profile third_user limit SESSIONS_PER_USER 30;

 

通过以上操作,我们就可以实现这个需求了。 

--------------------------------------------------------------------------------------------------

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.标准角色

CONNECT RESOURCE

 

2.系统权限

CREATE VIEW CREATE DATABASE LINK CREATE JOB CREATE SYNONYM UNLIMITED TABLESPACE

 

更改定额命令:ALTER USER 名称 QUOTA 0 ON 表空间名ALTER USER 名字 QUOTA (数值)K|M|UNLIMITED ON 表空间名;使用方法:A、控制用户数据增长B、当用户拥有一定的数据,而管理员不想让他在增加新的数据的时候。C、当将用户定额设为零的时候,用户不能创建新的数据,但原有数据仍可访问。

3.对象权限

DBA_PENDING_TRANSACTIONS (SELECT) — XA事务支持 grant select on sys.dba_pending_transactions to user;

 

4.建议开放DEBUG CONNECT SESSION                — 调试存储过程例如:

GRANT debug any procedure, debug connect session TO hr;

 

Oracle创建表空间、创建用户、授权、授权对象的访问以及查看权限1.创建临时表空间Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结

果进行排序。临时表空间的主要作用:索引create或rebuildOrder by 或 group byDistinct 操作Union 或 intersect 或 minusSort-merge joins

CREATE TEMPORARY TABLESPACE “TEST_TEMP” TEMPFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\GIS\TEST_DATA.ora’ SIZE 20M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

 

2.创建用户表空间

CREATE TABLESPACE “TEST_DATA” LOGGING DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\GIS\TEST_DATA.ora’ SIZE 20M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

 

3.创建用户并设置其表空间

username:usertest password:userpwd CREATE USER usertest IDENTIFIED BY userpwd DEFAULT TABLESPACE TEST_DATA TEMPORARY TABLESPACE TEST_TEMP;

 

4.给用户授权

GRANT   CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,   ALTER ANY TABLE, ALTER ANY PROCEDURE,   DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,   SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO username;

 

首先授权用户testuser两个基本的角色权限

CONNECT角色:    –是授予最终用户的典型权利,最基本的      

CREATE SESSION –建立会话

 

RESOURCE角色:    –是授予开发人员的       

CREATE CLUSTER –建立聚簇 CREATE PROCEDURE –建立过程 CREATE SEQUENCE –建立序列 CREATE TABLE –建表 CREATE TRIGGER –建立触发器 CREATE TYPE –建立类型 CREATE OPERATOR –创建操作者 CREATE INDEXTYPE –创建索引类型 CREATE TABLE –创建表

 

授权角色给用户的sql语句:

GRANT role TO username;

 

 

5.查看用户权限

查看所有用户

SELECT * FROM DBA_USERS; SELECT * FROM ALL_USERS; SELECT * FROM USER_USERS;

 

查看用户系统权限

SELECT * FROM DBA_SYS_PRIVS; SELECT * FROM USER_SYS_PRIVS;

 

查看用户对象或角色权限

SELECT * FROM DBA_TAB_PRIVS; SELECT * FROM ALL_TAB_PRIVS; SELECT * FROM USER_TAB_PRIVS;

 

查看所有角色

SELECT * FROM DBA_ROLES;

 

查看用户或角色所拥有的角色

SELECT * FROM DBA_ROLE_PRIVS; SELECT * FROM USER_ROLE_PRIVS;

 

遇到no privileges on tablespace ‘tablespace ‘

alter user userquota 10M[unlimited] on tablespace;

 



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3