阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

639次阅读
没有评论

共计 6220 个字符,预计需要花费 16 分钟才能阅读完成。

用 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<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 中的视图。这也是对系统安全的一种保护措施。第三方系统登录后,只能看到其同义词,其他的都不会访问得到。

最后还要对 NORTHBOUND 用户进行连接数的限制,以免第三方无限制的连接数据库,造成数据库 SESSION 暴涨:

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 NORTHBOUND profile third_user;

将会话数调整到 30

alter profile third_user limit SESSIONS_PER_USER 30;

————————————————————————————————–

跟第三方做接口程序时给对方开放只能查询某些视图用户的步骤如下:

我们有这样一个需求:在数据库中建立两个用户,用户 A 用于创建一些视图,直接访问自己数据库中一个模式下的表,以及通过数据库链路访问其他数据库中的表;另一个用户 B 能访问到这个用户 A 中的视图,并且只能访问视图,且访问连接数有限制。

这个用户 B 是用来给其他系统访问的,因此对权限和资源使用都需要有限制条件。

这种需求在很多行业的应用中都很常见。假如这是一道面试题,您该如何去回答呢?

我采用下面的方法来回答这个问题。

第一步,创建新用户 A 和 B。

这里用户名称分别为 ryd_interface_src  和 ryd_interface,对这两个用户都授予非常有限的权限。

复制代码
drop user ryd_interface_src cascade;

create user ryd_interface_src identified by ryd_interface_src;

grant connect,create view to ryd_interface_src;

drop user ryd_interface cascade;

create user ryd_interface identified by ryd_interface;

grant connect,create synonym to ryd_interface;

第二步,登录数据库一个模式中,授权给用户 A,使得用户 A 能创建视图

conn qlzqclient/qlzq+client8

grant select on INVEST_CLOCK  to ryd_interface_src with grant option;

grant select on INVEST_LOG  to ryd_interface_src with grant option;

这里授权方法加了一个 with grant option,请注意。

第三步,登录数据库用户 A 中,创建视图

复制代码
conn ryd_interface_src/ryd_interface_src

create or replace view run_views as

select id as doc_id, title,fbsj as upload_date,” as branch_code from qlzq.runs_lantern@CLIENT_QLZQWEB

where EXT1=’1′ and sysdate >  START_TIME

and sysdate < SOLID_TIME

union

select a.doc_id,a.title,a.upload_date,a.branch_code  from qlzq.cms_doc_single_attr@CLIENT_QLZQWEB a

left  join qlzq.cms_doc_category_map@CLIENT_QLZQWEB b on a.doc_id=b.doc_id

where

a.state =1 and a.is_delete =0

and  a.upload_date> 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 或 rebuild
Order by 或 group by
Distinct 操作
Union 或 intersect 或 minus
Sort-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;

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计6220字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7800686
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...