Oracle 数据库中的系统和数据库级用户

System and database leveled users in Oracle Database

我使用的是 Oracle 数据库 EX 11.2.0.2.0,我在那里创建了一个非常简单的数据库。 现在的问题是我想设置多个具有不同权限的用户。我找到了那个主题:How to create a user in Oracle 11g and grant permissions 但我无法在任何地方找到有关用户帐户的基本信息: 创建系统级用户和特定数据库级用户有什么区别? 我以 SYSTEM 身份登录 sqlplus 并执行了以下命令:

CREATE USER TEST IDENTIFIED BY password;
GRANT CONNECT TO TEST;

现在的问题是我的数据库实际上被称为 BASE,其中一个 table 被称为 PAYMENTS 并且将任何权限授予我无法执行的新创建用户:

GRANT SELECT ON PAYMENTS TO TEST;

但我必须输入:

GRANT SELECT ON BASE.PAYMENTS TO TEST;

所以我想我错过了什么。是否可以通过任何方式将创建的用户连接到特定数据库?以便新创建的用户在 Oracle APEX 中作为数据库用户可见?

用户和模式在 Oracle 中基本上是同义词。架构是用户拥有的对象的集合。

为了得到你想要的东西,你需要创建没有权限创建任何东西的用户,并且只能select来自其他人的对象。

在其他架构中引用对象时,您必须提供架构名称。其他用户可能有一个同名的 table。当前您使用系统用户登录,这是不可取的。在 BASE 模式(de Oracle DB 中用户的另一个名称)中创建对象时,为什么不给用户一些额外的权限(比如授予特权)? 你的问题的核心是你想授予用户 A 对 B 所拥有的对象的权限,以用户 C 的身份登录。在这种情况下,你必须非常具体地向 Oracle 授予哪些权限;)