暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

创建JDE只读数据库(Oracle)用户

JDE学习 2021-06-03
932

适合阅读对象

  • JDE CNC人员

  • 数据库管理人员(DBA)


前言

我们经常会遇到这种情况,需要提供数据库的只读用户,防止数据被修改:

  1. JDE日常查账,问题排查

  2. 报表软件取数

  3. 提供数据外部审核

  4. 第三方软件接口

我们知道JDE数据库有多个schema。因此,当出现此类要求时,最好在您的数据库中准备好只读角色。以下是提供对使用的只读访问权限的步骤:


创建数据库用户

让我们首先从创建数据库用户开始,通过提供用户名、用密码、用户表空间和临时表空间。以下 SQL 查询应该创建一个用户,用户名为 JDEREAD
,密码为 mypass
,用户表空间为 users
,临时表空间为 temp

CREATE USER JDEREAD
IDENTIFIED BY mypass
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

允许用户连接到数据库

必须允许用户在创建后连接到数据库。以下 SQL 将允许用户“JDEREAD”连接到数据库:

GRANT CREATE SESSION to JDEREAD;

确定访问JDE 数据库权限的名称

由于在 JDE中有多个Schema,首先列出需要访问的名单。对于此示例,我将在 JD Edwards 9.2 设置中提供对开发 (DV) 环境以及系统表的访问。各自的数据库名称(Schema)如下:

  1. TESTDTA(业务数据)

  2. TESTCTL(控制表)

  3. DV920(中心物体)

  4. SY920(系统表)

可以使用以下脚本来设置查询是否存在:

SELECT * FROM dba_tables WHERE owner IN ('TESTDTA', 'TESTCTL', 'SY920', 'DV920');

确定好后,后面步骤再使用。


创建只读角色

最好创建一个角色并授予只读访问权限,然后将其分配给用户,而不是直接将权限分配给用户。这将使您能够在下次出现类似需求时直接创建新用户,并为其分配只读角色即可。以下是创建名为“JDE_READONLY”的新角色的 SQL:

CREATE ROLE JDE_READONLY;


为角色分配权限

一旦准备好角色,我们将通过赋予SELECT ON
其分配SELECT
访问权限。以下是为数据库 TESTDTA、TESTCTL、DV920 和 SY920 中的所有表授予对角色 JDE_READONLY 的访问权限的 PL/SQL 脚本:

BEGIN
FOR x IN (SELECT * FROM dba_tables WHERE owner IN ('TESTDTA', 'TESTCTL', 'SY920', 'DV920'))
LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON ' || x.owner || '.' || x.table_name || ' TO JDE_READONLY';
END LOOP;
END;


为用户分配角色

一旦我们准备好用户和角色,我们就会将角色分配给用户,以授予他对所需表的选择权限。以下是将角色JDE_READONLY
分配给用户JDEREAD
的 SQL:

GRANT JDE_READONLY TO JDEREAD;

完成!



文章转载自JDE学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论